FormPump আপনি পরিচ্ছন্নভাবে এইচটিএমএল ফর্ম পূরণ করতে সক্ষম হবেন, জনপ্রিয় টেমপ্লেট ইঞ্জিনের সঙ্গে সংহত একটি পাইথন হাতিয়ার.
FormPump সঙ্গে কাজ করার এইচটিএমএল ফর্ম অনেক সহজ করা লিখিত পাইথন টেমপ্লেট ইঞ্জিন এক্সটেনশনের একটি সংকলন. এটা সরাসরি, আপনার ইনপুট মধ্যে মান পূরণ আপনার ইনপুট লেবেল আবেদন এবং একটি দ্রুত উপায় ত্রুটি বার্তা প্রদর্শন সংক্রান্ত সমস্যা তুলে ধরেছেন. এটা বিদ্যমান কোড মধ্যে মানিয়ে দ্রুত যে একটি স্বজ্ঞামূলক এবং প্রাকৃতিক উপায়ে ফরম উপাদান তৈরি যে আপনার টেমপ্লেট মধ্যে ট্যাগ / ফাংশন একটি সেট প্রবর্তনের দ্বারা এই আছে.
বর্তমানে, FormPump Jinja2 সমর্থন করে.
একটি পরিচায়ক [Jinja2] উদাহরণ
(এই উপস্থিত README দেখানো উদাহরণ Jinja2 দেখানো হয়. অন্য টেমপ্লেট ভাষায় অনুরূপ ব্যবহার করতে হবে.)
>>> Formpump আমদানি JinjaPump থেকে
>>> Jinja2 আমদানি পরিবেশ থেকে
>>> Env = পরিবেশ (এক্সটেনশন = [JinjaPump])
>>> Tpl = env.from_string ('' '
... {% ফর্ম "উদাহরণ" বর্গ = "সহজ-ফর্ম"%}
{% Endlabel%}: ... {% লেবেল 'inp'} একটি মান লিখুন
... {% টেক্সট "inp"%}
... {% Endform%}
... '' ')
>>> মুদ্রণ tpl.render ()
<ফর্ম কর্ম = "" বর্গ = "সহজ-ফর্ম" পদ্ধতি = "পোস্ট">
& Nbsp; একটি মান লিখুন <= "6GiCLEkUToekNy8xuN8AnT2esddU8MG8" লেবেল>: লেবেল>
& Nbsp; <ইনপুট টাইপ = "টেক্সট" নাম = "inp" মান = "" আইডি = "6GiCLEkUToekNy8xuN8AnT2esddU8MG8" />
ফর্ম>
& Nbsp;>>> মুদ্রণ tpl.render (form_vars = {'উদাহরণ': {'inp': 123}})
<ফর্ম কর্ম = "" বর্গ = "সহজ-ফর্ম" পদ্ধতি = "পোস্ট">
& Nbsp; একটি মান লিখুন <= "pnBP2IoFmfExTQdDZe44GKsFN6wrVOPu" লেবেল>: লেবেল>
& Nbsp; <ইনপুট টাইপ = "টেক্সট" নাম = "inp" মান = "" আইডি = "pnBP2IoFmfExTQdDZe44GKsFN6wrVOPu" />
ফর্ম>
উপরোক্ত উদাহরণে, আমরা একটি সহজ টেমপ্লেট বস্তুর এক ফর্ম রয়েছে যে তৈরি করা হচ্ছে দেখতে. কোনো আর্গুমেন্ট ছাড়া অনুষ্ঠিত হয়, এটি কেবল ভরা কোন তথ্য দিয়ে ফর্মটি ছাপে. বিশেষ "form_vars" অভি প্রদান করা হয়, এটি এটি তৈরি করে হিসাবে এটি ফর্ম মধ্যে খুঁজে পেতে পারেন কোনো মান fills.
এছাড়াও আপনি সেট হয়েছিল যে দীর্ঘ, অরুপ আইডি গুণাবলী খেয়াল করতে পারেন. FormPump ইনপুট সঙ্গে লেবেল যুক্ত করতে পারেন, যাতে এই প্রয়োজন হয়; এটা যায় FormPump তাদের করে তোলে. আপনি কেবল আপনার নিজস্ব আইডি প্রদান করে এবং আপনার উপাদানের উপর গুণাবলী জন্য তাদের নিজের অগ্রাহ্য করা বিনামূল্যে. FormPump স্বয়ংক্রিয়ভাবে টেমপ্লেট লেবেল এবং ইনপুট ট্র্যাক রাখে এবং intelligently এক অন্য সঙ্গে যুক্ত করার প্রচেষ্টা করা হয়, কিন্তু ইনপুট আছে না শুধুমাত্র যখন আইডি এর নির্দিষ্ট, এবং লেবেল নির্দিষ্ট হয়েছে জন্য হবে না.
ফরম পূরণ
FormPump মনোনীত টেমপ্লেট পরিবর্তনশীল ইনপুট মান খুঁজছেন দ্বারা ফর্ম fills. এই পরিবর্তনশীল form_vars ডিফল্ট কিন্তু এক্সটেনশন values_dict_name সম্পত্তি সেটিং দ্বারা কনফিগার করা যাবে (: env.values_dict_name Jinja2 জন্য, পরিবেশের উপর এই সেট).
form_vars অভিধান একটি অভিধান. শীর্ষ স্তরের কি ফর্ম প্রসঙ্গে অভিন্ন পরিচয় হয়, আরো নিচে বিস্তারিতভাবে ব্যাখ্যা. প্রতিটি ফরমের প্রসঙ্গে FormPump ফর্ম জন্য মান লুকআপ ব্যবহার করে কি-মান জোড়া একটি সহজ সেট, যা অন্য অভিধান বোঝায়. কি ইনপুট নাম পড়ুন. মান ইউনিকোড রূপান্তরিত, ইনপুট জন্য * মান বৈশিষ্ট্য পরিণত হয়.
* উল্লেখ্য: মান পূর্বাহ্নে নির্ধারিত হয় যেখানে একটি রেডিও বাটন, মত ইনপুট, FormPump যদি থাকে, preselect যা রেডিও বোতাম নির্ধারণ form_vars মান ব্যবহার করে.
ফরম প্রসঙ্গের এর
FormPump আপনি আপনার টেমপ্লেট একাধিক ফর্ম করতে সক্ষম হবেন. প্রতিটি ফরমের ওভারল্যাপিং ইনপুট নাম থাকতে পারে. ফর্ম FormPump ফর্ম প্রসঙ্গে কল কি দ্বারা disambiguated হয়. উদাহরণস্বরূপ উপরে "উদাহরণ" সেট একটি ফর্ম প্রসঙ্গ দেখায় - এটা ফর্ম শব্দ নিম্নলিখিত অবিলম্বে পংক্তি. স্ট্রিং একটি ধ্রুবক স্ট্রিং না একটি পরিবর্তনশীল বা অন্যান্য গতিশীল অভিব্যক্তি, (নিচে আচ্ছাদিত এই কাছাকাছি একটি উপায় আছে) হতে হবে.
একটি সহজ উদাহরণ তাদের ব্যবহার শোধন করা উচিত:
& Nbsp;>>> tpl = env.from_string ('' '
... {% ফর্ম "একটি"%}
... {% টেক্সট "inp"%}
... {% Endform%}
... {% ফর্ম "খ"%}
... {% টেক্সট "inp"%}
... {% Endform%}
... '' ')
& Nbsp;>>> মুদ্রণ tpl.render (form_vars = {'একটি': {'inp': 'এ'}, 'খ': {'inp': 'বি'}})
<ফর্ম কর্ম = "" পদ্ধতি = "পোস্ট">
& Nbsp; <ইনপুট টাইপ = "টেক্সট" নাম = "inp" মান = "একটি" আইডি = "TCpYQKe8Dsx3jvRLqUCKRtUfsDGmDIxu" />
ফর্ম>
<ফর্ম কর্ম = "" পদ্ধতি = "পোস্ট">
& Nbsp; <ইনপুট টাইপ = "টেক্সট" নাম = "inp" মান = "বি" আইডি = "8qXe3PUDgmDPAD3SOdQp6xEq3dYokLyU" />
ফর্ম>
ফরম প্রেক্ষিতে আসলে একটি দ্বৈত উদ্দেশ্য পরিবেশন করা. একটি পৃষ্ঠায় একাধিক এইচটিএমএল ফর্ম থাকার সঙ্গে একটি সাধারণ বাধা যে উভয় ফর্ম একই কর্মের বৈশিষ্ট্য আছে জমা ছিল যা ফর্ম নির্ধারণ করা কঠিন হতে পারে. ফরম প্রেক্ষিতে সাহায্য করতে পারেন.
এ পর্যন্ত দেখানো হয়েছে ডিফল্ট সেটিংস সঙ্গে, তারা আউটপুট উপর কোন সরাসরি প্রভাব আছে. আপনি এক্সটেনশন উপর form_name_key সম্পত্তি সেট যাইহোক, যদি FormPump স্বয়ংক্রিয়ভাবে (পরিবেশের উপর এই সেট Jinja2 জন্য,) তার নাম হিসাবে ফর্ম প্রসঙ্গ মান রয়েছে যে একটি লুকানো ইনপুট সন্নিবেশ করা হবে.
& Nbsp;>>> env.form_name_key = '__'
& Nbsp;>>> tpl = env.from_string ('' '
... {% ফর্ম "উদাহরণ"%}
... {% Endform%}
... '' ')
& Nbsp;>>> মুদ্রণ tpl.render ()
<ফর্ম কর্ম = "" পদ্ধতি = "পোস্ট"> <ইনপুট টাইপ = "লুকানো" নাম = "__" মান = "উদাহরণ" />
ফর্ম>
মূল্য জমা তারপর সহজে সার্ভারে জমা ফর্ম চিহ্নিত করতে ব্যবহার করা যেতে পারে.
কিন্তু, এই বৈশিষ্ট্য ব্যবহার করে আরো এক জটিলতা দেখাবে! আমরা এক ফর্ম একটি পৃষ্ঠায় একাধিক বার পুনরাবৃত্তি করতে চান. ফর্ম প্রতিটি পুনরাবৃত্তি সঙ্গে, আমরা prefilled হয় যে ভেরিয়েবল পরিবর্তন করতে চান. উদাহরণস্বরূপ, আপনি একটি কোম্পানীর জনের একটি তালিকা আছে, এবং আপনি সম্পাদনা করতে এবং প্রতিটি জন্য ফোন নম্বর আপডেট জমা দিতে সক্ষম হতে চান. ফর্ম পূরণ করার সময় তাই আপনাকে ফিরে সার্ভারে জমা একই formname, কিন্তু একটি _different ফর্ম প্রসঙ্গে চাই. আপনি FormPump উড়ে থেকে মান দেখায় যেখানে প্রেক্ষাপটে পরিবর্তন করতে পারবেন যা form_ctx ফাংশন, লিখুন. form_ctx ফাংশন এছাড়াও আপনি স্ট্যান্ডার্ড ফর্ম কাজ করে না যা আপনার ফর্ম, গতিশীল প্রসঙ্গ নাম ধার্য করতে পারবেন:
& Nbsp;>>> tpl = env.from_string ('' '
...
... {% ফর্ম "ব্যক্তি"%}
... {% Form_ctx "ব্যক্তি.% D"% ব্যক্তি ['আইডি']%}
... {% লুকানো "আইডি"%}
... {% লেবেল "ফোন"%} {{ব্যক্তি ['নাম']}} {% endlabel%}
... {% টেক্সট "ফোন"%}
... {% Endform%}
...
... {মানুষ% এর মধ্যে ব্যক্তির জন্য%}
...
... {% Endfor%}
...
... '' ')
& Nbsp;>>> = [{মানুষ 'আইডি': 1, 'নাম': 'বিল বি', 'ফোন': '555-123-4567'},
... {'আইডি': 2, 'নাম', 'ক্রিস সি', 'ফোন': '555-7654-321'}]
& Nbsp;>>> মুদ্রণ tpl.render (মানুষ = মানুষ,
... Form_vars = অভি ([('ব্যক্তি.% D'% ব্যক্তি ['আইডি'], মানুষের মধ্যে ব্যক্তির জন্য ব্যক্তি)]))
& Nbsp; <ফর্ম কর্ম = "" পদ্ধতি = "পোস্ট"> <ইনপুট টাইপ = "লুকানো" নাম = "__" মান = "ব্যক্তি" />
& Nbsp; <ইনপুট টাইপ = "লুকানো" নাম = "আইডি" মান = "1" আইডি = "SnX73O3VCSqGdKKfk14UL5W2riTZwuVq" />
& Nbsp; <= "weiOPnfowyRnF2tKTM9dGCVTUjmS7NZM" লেবেল> বিল বি লেবেল>
& Nbsp; <ইনপুট টাইপ = "টেক্সট" নাম = "ফোন" মান = "555-123-4567" আইডি = "weiOPnfowyRnF2tKTM9dGCVTUjmS7NZM" />
& Nbsp; ফর্ম>
& Nbsp;
& Nbsp; <ফর্ম কর্ম = "" পদ্ধতি = "পোস্ট"> <ইনপুট টাইপ = "লুকানো" নাম = "__" মান = "ব্যক্তি" />
& Nbsp; <ইনপুট টাইপ = "লুকানো" নাম = "আইডি" মান = "2" আইডি = "TXyn6Vos37ixMPsNBsu8G10n9NlZrnlV" />
& Nbsp; <= "2EKjdwWOY1GdtCVK20dtZYAqBSs4Bo9i" লেবেল> ক্রিস সি লেবেল>
& Nbsp; <ইনপুট টাইপ = "টেক্সট" নাম = "ফোন" মান = "555-7654-321" আইডি = "2EKjdwWOY1GdtCVK20dtZYAqBSs4Bo9i" />
& Nbsp; ফর্ম>
& Nbsp;
& Nbsp;
& Nbsp;
আপনি উপরে তাকান, আপনি একই ফর্ম নামের সঙ্গে দুই ফর্ম, উভয় দেখতে, কিন্তু গতিশীল form_ctx ধন্যবাদ ভরা বিভিন্ন মান হবে. form_ctx ফাংশন এটি পরে আসা যে সমস্ত ইনপুট প্রভাবিত করে. যদি আপনি চান আপনি প্রতিটি এক পূর্ববর্তী প্রাক empting, একটি ফর্ম মধ্যে একাধিক form_ctx এর নির্দিষ্ট করতে পারেন. তার stylistically বিভ্রান্তিকর হতে পারে তবে উল্লেখ্য যে.
ফরম ত্রুটি
ফরম ত্রুটি অনেক form_vars মত কাজ. আপনি. মধ্যে অনুরূপ একটি মান না খুঁজে কোন ত্রুটি করা চাই ত্রুটি যেতে হবে যেখানে ইঙ্গিত, এবং তারপর কোনো ধারণকারী অভিধান এবং সব ত্রুটি বার্তা একটি নেস্টেড অভিধান হিসাবে form_error উল্লেখ করতে আপনার টেমপ্লেট এর মধ্যে ত্রুটি ফাংশন ব্যবহার form_error লুকআপ চূড়ান্ত আউটপুট বাকি আউট করা হবে.
>>> Tpl = env.from_string ('' '
... {% ফর্ম "উদাহরণ"%}
... {% ত্রুটি "field_A"%}
... {% টেক্সট "field_A"%}
... {% ত্রুটি "field_B"%}
... {% টেক্সট "field_B"%}
... {% Endform%}
... '' ')
>>> মুদ্রণ tpl.render (form_vars = {"উদাহরণ": {"field_A": "Val একটি", "field_B": "Val বি"}},
... Form_errors = {"উদাহরণ": {"field_B": "ত্রুটি বি"}})
<ফর্ম কর্ম = "" পদ্ধতি = "পোস্ট">
& Nbsp; <ইনপুট টাইপ = "টেক্সট" নাম = "field_A" মান = "Val একটি" আইডি = "XkWRXAE0w18j0N6c1mHmtEsSCMPJZWRn" />
& Nbsp;
& Nbsp; <ইনপুট বর্গ = "ত্রুটি" টাইপ = "টেক্সট" নাম = "field_B" মান = "Val বি" আইডি = "rP5RGqTnitBwA3oP8BZNcQ9oz3pFp0BC" />
ফর্ম>
উল্লেখ্য, একটি ত্রুটি খুঁজে যে কোন ইনপুট তাদের যোগ করা হয়েছে "ত্রুটি" CSS বর্গ হবে.
ডিফল্ট ত্রুটি বার্তা উপরে না & mdash মত আউটপুট আছে; শ্রেণী "ত্রুটি বার্তা" সঙ্গে একটি DIV. {% ত্রুটি উপস্থাপন = "কাস্টম"%}: আপনি তার error_renderers অভিধান ফাংশন নির্ধারণ এবং তারপর টেমপ্লেট উপস্থাপন বৈশিষ্ট্য নির্ধারণ করে আপনার নিজের ত্রুটি বার্তা শৈলী নির্দিষ্ট করতে পারেন. . ডিফল্টভাবে, সকল ত্রুটি উপেক্ষা করার বিনামূল্যে যা "ডিফল্ট" উপস্থাপন ব্যবহার
আবশ্যক
- পাইথন
পাওয়া মন্তব্যসমূহ না