ইতিমধ্যে বৈধতা ফর্ম মধ্যে ত্রুটি ইনজেকশন?


99

form.Formব্যবহারকারীদের ইনপুট মানগুলি যাচাই করার পরে আমি এগুলিকে আরও প্রক্রিয়াজাতকরণের জন্য একটি পৃথক (বাহ্যিক) প্রক্রিয়ায় পাস করি। এই বাহ্যিক প্রক্রিয়াটি মানগুলিতে আরও ত্রুটিগুলি খুঁজে পেতে পারে।

ইতিমধ্যে বৈধ আকারে এই ত্রুটিগুলি ইনজেক্ট করার কোনও উপায় আছে যাতে এগুলি স্বাভাবিক ফর্ম ত্রুটি প্রদর্শন পদ্ধতিগুলির মাধ্যমে প্রদর্শিত হয় (বা আরও ভাল বিকল্প পদ্ধতির রয়েছে)?

একটি পরামর্শ ছিল ফর্ম বৈধকরণের মধ্যে বাহ্যিক প্রক্রিয়াকরণ অন্তর্ভুক্ত করা, যা আদর্শ নয় কারণ বাহ্যিক প্রক্রিয়া নিছক বৈধকরণের চেয়ে অনেক বেশি কিছু করে।

উত্তর:


95

Form._errorsএকটি স্ট্যান্ডার্ড অভিধানের মতো বিবেচনা করা যেতে পারে। এটি ErrorListক্লাসটি ব্যবহার করা এবং বিদ্যমান তালিকায় ত্রুটিগুলি যুক্ত করতে ভাল ফর্ম হিসাবে বিবেচিত :

from django.forms.utils import ErrorList
errors = form._errors.setdefault("myfield", ErrorList())
errors.append(u"My error here")

এবং যদি আপনি নন-ফিল্ড ত্রুটি যুক্ত করতে চান তবে এর পরিবর্তে django.forms.forms.NON_FIELD_ERRORS(ডিফল্ট "__all__") ব্যবহার করুন "myfield"


4
এটি কিছুটা অপ্রীতিকর বলে মনে হচ্ছে, যেহেতু "_erferences" নামটি ফর্ম শ্রেণীর অভ্যন্তরীণ বলে মনে হয়। জ্যাঙ্গোতে এটি করার আদর্শ উপায় কি? আমি ওপি'র মতো একই পরিস্থিতিতে আছি: আমার একটি ফর্ম রয়েছে যেখানে ব্যবহারকারীরা একটি নতুন নাম সরবরাহ করেন যা অবশ্যই ডাটাবেসে অনন্য হতে হবে। যদি কোনও সংঘর্ষ হয় তবে আমি ফর্মটিতে এটির একটি ত্রুটি সহ প্রেরণ করতে চাই, তবে ডাটাবেস sertোকানোর চেষ্টা না করা অবধি আমি জানব না। (তত্ত্বের
ভিত্তিতে বৈধকারীর

4
@ এসএমপি: ধন্যবাদ, স্থির @ ওয়েবেল: _errorsএর নাম সত্ত্বেও সর্বজনীন ফর্ম এপিআইয়ের একটি অংশ; ডক্স লিঙ্কের জন্য ইনসিনের উত্তর দেখুন।
জন মিলিকিন 21'10

18
এটি অবিশ্বাস্যরকম অ পাইথোনিক। Form.erferences ['myfield']। Append (my_error) বা form.add_error ('myfield', my_error) প্রয়োগ করা কতটা কঠিন ছিল? বর্তমান বাস্তবায়নে ত্রুটির জন্য অনেক কক্ষের (কোনও পাং উদ্দেশ্যে নয়)
মাইকেল

4
বেশিরভাগ সম্পূর্ণ। এক অতিরিক্ত মনে রাখবেন যদি is_valid () বলা হয় না হয় তাহলে আপনি সেট form._errors = ErrorDict () করার প্রয়োজন হবে
জ্যাকব



14

আপনি _errorsসরাসরি ফর্মটির বৈশিষ্ট্যে অতিরিক্ত ত্রুটির বিবরণ যুক্ত করতে পারেন :

https://docs.djangoproject.com/en/1.5/ref/forms/uthorization/#desmitted-later https://docs.djangoproject.com/en/1.6/ref/forms/omotation/#modifying-field-erferences


6
এবং স্পষ্টতই ১. development বিকাশের সংস্করণে তারা একটি add_errorফাংশন যুক্ত করছে: ডকস.ডজ্যাঙ্গোপ্রজেক্ট
দেবদেব

এবং এখন জাজানো ১. এর একটি অফিসিয়াল অ্যাড_অরর ফাংশন রয়েছে: ডকস.ডজ্যাঙ্গোপ্রজেক্ট /en/1.7/ref/forms/api/…
ড্যানিলো ক্যাবেলো

0

নির্দিষ্ট ক্ষেত্রে ত্রুটি যুক্ত করুন:

form.add_error('fieldName', 'error description')

** অ ক্ষেত্রগুলিতে ত্রুটি যুক্ত করুন **

form.add_error(None, 'error description')
#Only pass None instead of field name
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.