python example - هل يمكنني الحصول على نموذج Django بدون نموذج




urls (2)

هل يمكنني الحصول على نموذج في القالب الذي لا يدعمه نموذج. ولست بحاجة إلى تخزين البيانات التي تحتاج فقط إلى تلك البيانات لإنشاء طلب POST خاصتي في طريقة العرض.

قالب - النموذج الذي يحتوي على حقول نصية. عرض - الحصول على البيانات من النموذج ، وتوليد طلب آخر.

التدفق -> يأخذ النموذج المقدم إلى عنوان URL الذي يستدعي العرض "

def form_handle(request):
    if request.method=='POST'
    form = request.POST

    #blah blah encode parameters for a url blah blah 
    #and make another post request

ولكن هذا يضع رمز csrf فقط في متغير النموذج. هل هناك طريقة يمكنني من خلالها الوصول إلى حقول النص الخاصة بالقالب في طريقة العرض الخاصة بي في النموذج؟

أعرف كيف أفعل ذلك بنموذج ولكن لا أستطيع تحديد ذلك!


Answers

نعم فعلا. هذا ممكن جدا. يمكنك القراءة على كائنات النموذج . قد تكون بنفس الطريقة التي ModelForm مع ModelForm ، فيما عدا أنك غير ملزم بالنموذج ، وعليك أن تعلن بوضوح عن كل خصائص النموذج.

def form_handle(request):
    form = MyForm()
    if request.method=='POST':
        form = MyForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            #now in the object cd, you have the form as a dictionary.
            a = cd.get('a')

    #blah blah encode parameters for a url blah blah 
    #and make another post request
    #edit : added ": "  after    if request.method=='POST'

و

class MyForm(forms.Form): #Note that it is not inheriting from forms.ModelForm
    a = forms.CharField(max_length=20)
    #All my attributes here

في القالب:

<form action="{% url form_handle %}" method="POST">{% csrf_token %}
    {{form.as_p}}
    <button type="submit">Submit</button>
</form>

عند العمل مع I / O ملف ، فإن الشيء المهم هو النظر

TOCTTOU (وقت الاختيار إلى وقت الاستخدام)

لذلك ، قد يؤدي إجراء عملية فحص ifثم القراءة أو الكتابة لاحقًا إلى استثناء I / O غير معالج. أفضل طريقة للقيام بذلك هي:

try:
    os.makedirs(dir_path)
except OSError as e:
    if e.errno != errno.EEXIS:
        raise




python django django-models django-forms django-views