2009-04-07 12 views
12

मैं निम्नलिखित कुछ ऐसे स्वरूप में:Django फार्म क्षेत्रों के बीच में कुछ मुक्त पाठ प्रदर्शित

class MyForm(Form): 

    #personal data 
    firstname = CharField() 
    lastname = CharField() 

    #education data 
    university = CharField() 
    major = CharField() 

    #foobar data 
    foobar = ChoiceField() 

के बाद से (foobar की तरह) कुछ क्षेत्रों डेटाबेस से भर जाती है मैं Django दे के अलावा अन्य किसी अन्य विधि का उपयोग नहीं कर सकते form.as_ul

इसके अलावा काश मैं मेंटेनैंस

में आसानी के लिए कई रूपों में प्रपत्र को विभाजित करने की जरूरत नहीं है के साथ मेरे लिए प्रस्तुत करना वहाँ एक रास्ता Django बताने के लिए इन दोनों के बीच में एक सहायता पाठ प्रदर्शित करने के लिए है फॉर्म सेक्शन ताकि मैं फाइल करने के तरीके पर कुछ निर्देश डाल सकूं एल फॉर्म?

मैं कुछ इस तरह प्रस्तुत करना प्रपत्र चाहते हैं:

<form> 

    <p>Here you enter your personal data...</p> 
    <input name='firstname'> 
    <input name='lastname'> 

    <p>Here you enter your education data...</p> 
    <input name='university'> 
    <input name='major'> 

</form> 

मैं उन <P> टैग दिखाने के लिए सक्षम होने के लिए अपने खुद के विजेट बनाने की जरूरत हैं, या वहाँ एक आसान तरीका है?

धन्यवाद

उत्तर

3

के बाद से प्रत्येक अनुभाग एकाधिक, स्वतंत्र प्रपत्र फ़ील्ड्स का एक संग्रह है, मैं एक कस्टम प्रपत्र टेम्पलेट का उपयोग करना चाहिये। यह आपको न्यूनतम अतिरिक्त काम के साथ लेआउट पर पूर्ण पूर्ण नियंत्रण देता है। Django के Customizing the Form Template दस्तावेज़ों में विवरण हैं।

+0

यह सच है, मैं भी उत्पादन कुछ के लिए FIELDNAME – Lorenzo

0

भले ही आपका फॉर्म किसी डेटाबेस से पॉप्युलेट हो, फिर भी आपको फ़ॉर्म को मैन्युअल रूप से लिखने या टेम्पलेट का उपयोग करने में सक्षम होना चाहिए। अधिक जानकारी के लिए Django form documentation देखें।

1

यह भी याद रखें कि एक Django फॉर्म ऑब्जेक्ट केवल फ़ील्ड का संग्रह है; HTML फॉर्म टैग और Django फॉर्म ऑब्जेक्ट्स के बीच 1: 1 पत्राचार की आवश्यकता नहीं है। यदि फॉर्म के विभिन्न अनुभाग वास्तव में तर्कसंगत रूप से अलग हैं, तो आप इसे तीन रूपों में विभाजित करने पर विचार कर सकते हैं, जिसे आप अपने टेम्पलेट में किसी भी HTML के साथ प्रस्तुत कर सकते हैं (लेकिन फिर भी एक HTML फॉर्म टैग के भीतर)।

चाहे यह एक समझदार समाधान है, निश्चित रूप से आपके ऐप और दृश्य के डिज़ाइन पर थोड़ा सा निर्भर करता है।

9

यदि आप फॉर्म को कस्टमाइज़ करना चाहते हैं, तो आपको इसे form.as_ul प्रस्तुत करने की आवश्यकता नहीं है। Django जानता है कि अगर आप फॉर्म मॉडल को सही तरीके से सेट अप करते हैं तो foobar को कैसे प्रस्तुत करें ... इसे आजमाएं ... कोई चिंता नहीं।

देखें कि सर्वर पर किस पायथन ने आपका पृष्ठ भेजा है। उदाहरण के लिए वह इस तरह का Django प्रपत्र भेजा है, तो:

return respond(request, user, 'templateName', { 'myform':myform })

तो templateName.html होगा:

<blockquote> 
<form> 

    <p>Here you enter your personal data...</p> 
    {{myform.firstname }} 

    <p>Here you enter your education data...</p> 
    {{myform.university }} 

    <p> a choice field </p> 
    {{myform.foobar}} 

</form> 
</blockquote> 
14

एक तरीका यह फ़ॉर्म का उपयोग करके टेम्पलेट में अपने फ़ॉर्म प्रदर्शित किए बिना ऐसा करने के लिए .as_ul, django-uni-form के साथ है। सबसे पहले आपको इसे here डाउनलोड करना होगा और इसे इंस्टॉल करना होगा।फिर अपने विधि सेट अप करने के लिए कोड इस तरह दिखता किए जा सकेंगे:

from uni_form.helpers import FormHelper, Submit, Layout, Fieldset 

class MyForm(Form): 

    #personal data 
    firstname = CharField() 
    lastname = CharField() 

    #education data 
    university = CharField() 
    major = CharField() 

    #foobar data 
    foobar = ChoiceField() 

    # now attach a uni_form helper to display the form 
    helper = FormHelper() 

    # create the layout 
    layout = Layout(
     # first fieldset 
     Fieldset("Here you enter your personal data...", 
      'firstname', 'lastname'), 
     Fieldset("Here you enter your education data...", 
      'university', 'major'), 
     Fieldset('foobar') 

    # and add a submit button 
    sumbit = Submit('add', 'Submit information') 
    helper.add_input(submit) 

अब, अपने टेम्पलेट में इसे प्रदर्शित करने के आप इस करना होगा:

{% load uni_form %} 
{% with form.helper as helper %} 
    {% uni_form form helper %} 
{% endwith %} 

यह होगा उत्पादन एचटीएमएल (मोटे तौर पर) इस तरह :

<form> 
<fieldset><legend>Here you enter your personal data...</legend> 
<input name='firstname'> 
<input name='lastname'> 
</fieldset> 

<fieldset><legend>Here you enter your education data...</legend> 
<input name='university'> 
<input name='major'> 
</fieldset> 

<fieldset> 
<input name='foobar'> 
</fieldset> 

</form> 

uni_form पर अधिक जानकारी के लिए, उनके दस्तावेज़ पढ़ें (उपरोक्त लिंक देखें)।

पीएस: मुझे एहसास है कि यह उत्तर देर हो चुकी है, और मुझे यकीन है कि आप इस समस्या को हल कर चुके हैं, लेकिन मुझे लगता है कि यह किसी के लिए अभी भी उपयोगी हो सकता है।

+0

महान त्वरित दस्तावेज़ के आधार पर सामान uni-फार्म के साथ शुरू हो रही हो सकता है –

1

आपके द्वारा ज्ञात रूपों में help_text फ़ील्ड है।

forms.py में:

  • myField = forms.myFieldType(help_text="Helping friendly text to put in your form", otherStuff=otherStuff)

में forms.html:

  • {{form.myField.help_text}}
0

लेखक के समान स्थिति में, मैं सीएसएस और :before और/या :after छद्म चयनकर्ताओं को या तो input या label फ़ॉर्म के तत्वों पर गिरने की सलाह देता हूं। वे भी ठीक काम करते हैं और आपके जीवन को बहुत आसान बना सकते हैं क्योंकि आप अभी भी {{ form.as_p }} का उपयोग कर सकते हैं।

0

@ मिपाडी के साथ सहमत हुए, ऐसा लगता है कि यह सबसे आसान तरीका है।

तो

की तरह कुछ
$('.selector').append('<html></html>') 
संबंधित मुद्दे