2009-09-20 2 views
11

django newbie को प्रदर्शित नहीं कर रहा है। मेरे पास पंजीकरण पृष्ठ का प्रयास है।django dateTimeWidget

इसमें टेक्स्ट फ़ील्ड्स (नाम, उपयोगकर्ता नाम, पासवर्ड, आदि) और डेटफिल्ड (जन्मदिन) शामिल हैं।

मैं एक फॉर्म का उपयोग करने की कोशिश कर रहा हूं। डेटफिल्ड के लिए डेटटाइम इनपुट विजेट, लेकिन जब पृष्ठ प्रस्तुत किया जाता है, तो कुछ भी नहीं होता है। क्या मुझसे कुछ गलत हो रही है? क्या इसमें कुछ दिख रहा है? यह बहुत आसान लगता है, लेकिन मैं इसे काम करने के लिए नहीं मिल सकता है। या तो एक DateInput, या एक DateTimeField का उपयोग करें -

यह मेरा रूप

class RegisterForm(forms.Form): 
    username = forms.CharField(max_length= 50) 
    password = forms.CharField(label=u'Password',widget = forms.PasswordInput(render_value=False))#password 

    birthday = forms.DateField(required=False,initial=datetime.date.today,widget = forms.DateTimeInput())#25 Oct 2006 

और मेरे बहुत ही सरल HTML

<form action="" method = "POST"> 
{{ form.as_p}} 
<input type='Submit' value='Register'/> 
</form> 
+0

क्या आप स्पष्टीकरण दे सकते हैं? क्या पूरा फॉर्म प्रतिपादन नहीं कर रहा है, या सिर्फ डेटटाइम फ़ील्ड है? – David

+0

रूपों और 'इनपुट' प्रकट होते हैं। इसका कैलेंडर विजेट जो नहीं करता है। – Tom

+0

जब मैंने डेटइनपुट विजेट पढ़ा तो मुझे भी एक ग्राफिकल दिनांक पिकर नियंत्रण की उम्मीद थी (जैसे django व्यवस्थापक में)। हालांकि, मुझे लगता है कि यह सिर्फ एक सादा पाठ बॉक्स है। सहज ज्ञान युक्त आईएमओ नहीं। – User

उत्तर

4

आप एक DateField के साथ एक DateTimeInput उपयोग नहीं करना चाहिए है।

हालांकि, मुझे संदेह है कि 'कुछ नहीं होता' से आपका क्या मतलब है कि कैलेंडर दिनांक चयनकर्ता के लिए लिंक प्रकट नहीं होते हैं। ये मानक रूपों के ढांचे का हिस्सा नहीं हैं, और दस्तावेज़ीकरण यह सुझाव नहीं देता है कि वे दिनांक/दिनांक समय इनपुट के साथ दिखाई देते हैं। वे व्यवस्थापक एप्लिकेशन का हिस्सा हैं, इसलिए यदि आपको अपने ऐप में उनकी आवश्यकता है तो आपको जावास्क्रिप्ट फ़ाइलों को स्पष्ट रूप से शामिल करने की आवश्यकता होगी।

ऐसा करने का सबसे आसान तरीका शायद AdminDateWidgetdjango.contrib.admin.widgets से दिनांक इनपुट के बजाय उपयोग करना है। आपको अपने टेम्पलेट में jsi18n स्क्रिप्ट को भी शामिल करने की आवश्यकता होगी:

<script type="text/javascript" src="/admin/jsi18n/"></script> 
+0

मैं वास्तव में उलझन में हूं जहां Django डेटाटाइम विजेट्स के साथ है। डॉक्स 1.1 में एक अद्यतन दर्शाता है लेकिन मुझे स्पष्ट नहीं है कि यह क्या है। अगर मेरे पास ऐसा कोई फॉर्म है:

 class EventForm(forms.ModelForm): summary = forms.CharField(label="Event Name", widget=forms.TextInput(attrs={'size':'40'})) dtstart = forms.DateTimeField(widget=AdminDateWidget()) dtend = forms.DateTimeField(widget=AdminDateWidget) 
जावास्क्रिप्ट लोड हो गया है, लेकिन फॉर्म में कैलेंडर आइकन दिखाई नहीं देता है। मुझे इसके बारे में कुछ स्पष्टता पसंद आएगी क्योंकि मुझे jQuery पर वापस जाना है। – PhoebeB

+0

/व्यवस्थापक/jsi18n जरूरत है STF – goh

6

कैलेंडर दिनांक चयनकर्ता फॉर्म ढांचे का हिस्सा नहीं है।
आप तथापि jQuery दिनांक चयनकर्ता विजेट

<script type="text/javascript" src="{{ MEDIA_URL }}js/jquery-min.js"></script> 
<!-- give correct location for jquery.js --> 
<script type="text/javascript" src="{{ MEDIA_URL }}js/jquery-ui-min.js"></script> 
<!-- give correct location for jquery-ui.js --> 
<script type="text/javascript"> 
    jQuery(function() { 
     jQuery("#id_birthday").datepicker({ dateFormat: 'yy-mm-dd' }); 
    }); 
</script> 
<form method="post"> 
    {{ form.as_p }} 
    <input type="submit" value="Create Phase" /> 
</form> 

उपयोग कर सकते हैं/पर क्लिक जन्मदिन पाठ बॉक्स का चयन करने पर यह एक कैलेंडर चयनकर्ता विजेट दिखाएगा
कृपया अपने jquery.js और jQuery-ui.js

के सही स्थान देना
10

Django DateInput विजेट कुछ सादा पाठ इनपुट प्रदान नहीं करता है। हालांकि यह विभिन्न प्रारूपों के खिलाफ उपयोगकर्ता के इनपुट को मान्य करता है, इसलिए यह बेकार नहीं है।

अधिकांश लोग Django Admin इंटरफ़ेस में दिनांक पिकर के रूप में उसी तरह व्यवहार करने की अपेक्षा करेंगे, इसलिए यह निश्चित रूप से थोड़ा उलझन में है।

अपने स्वयं के ऐप्स में AdminDateWidget का उपयोग करना संभव है, लेकिन मैं इसके खिलाफ सलाह दूंगा। इसमें a lot of fiddling around to make it work लगता है।

सबसे आसान समाधान JQuery UI Datepicker जैसे कुछ का उपयोग करना है।सीधे शब्दों में शामिल अपने पृष्ठ के <head> में निम्नलिखित:

<link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/redmond/jquery-ui.css" rel="Stylesheet" /> 
<script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js"></script> 
फिर तल पर

, आपके इनपुट तत्वों पर Datepicker सक्रिय करने के लिए निम्न पंक्ति डाल:

<script type="text/javascript"> 
    $(function(){ 
    $("#id_birthday").datepicker(); 
    }); 
</script> 

आप कर सकते हैं यह एक छोटे से अधिक सूखी जिसमें आप कस्टम विजेट बनाने के द्वारा कई तिथि खाने अगर अपने forms.py:

class JQueryUIDatepickerWidget(forms.DateInput): 
    def __init__(self, **kwargs): 
     super(forms.DateInput, self).__init__(attrs={"size":10, "class": "dateinput"}, **kwargs) 

    class Media: 
     css = {"all":("http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/redmond/jquery-ui.css",)} 
     js = ("http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js", 
       "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js",) 

प्रत्येक तिथि क्षेत्र निर्दिष्ट करें अपने च में इस विजेट का उपयोग करना चाहिए ORMS:

birthday = forms.DateField(label="Birthday", widget=JQueryUIDatepickerWidget) 

और अपने खाके में, <head> में निम्नलिखित शामिल हैं:

{{form.media}} 

और पृष्ठ के तल पर निम्नलिखित डालकर सभी क्षेत्रों के लिए Datepicker सक्रिय करें:

<script type="text/javascript"> 
    $(function(){ 
    $(".dateinput").datepicker(); 
    }); 
</script>