Django-Form - django-bootstrap-datepicker-plus rendert den Datums-Picker nicht

9

Ich habe einige Unannehmlichkeiten, wenn ich versuche, django-bootstrap-datepicker-plus Widget auszugeben nach dieser Antwort . Alles funktioniert gut, aber der Datepicker wird nicht angezeigt.

Meine Django-Version ist 1.10.7 und die Apps von Drittanbietern, die ich verwende, sind:

Dies ist meine forms.py , ich überschreibe die Klasse DateInput , um sie an meine Bedürfnisse anzupassen.

%Vor%

Dann habe ich in meinem Template-Formular eine Basismastervorlage namens layout.html , Meine Vorlage user_form.html , in der ich die oben erwähnten Formularfelder rendern möchte. All diese Vorlagen haben einige divs und html Struktur, wie Sie in user_form.html file sehen können hier .

In Bootstrap-Einstellungen in meinem settings.py muss ich include_jquery -Option auf True

setzen

Wenn ich auf die Formularseite gehe, wird das Feld date_of_birth nicht als a gerendert calendar datepicker, das ist render als Eingabeart Text, in dem der Benutzer das Datum manuell und in einem bestimmten Format eingeben soll.

In meinem layout.html rufe ich einige zusätzliche cdn jQuery Ressourcen zu anderen Dingen auf.

  • Führt das zu Konflikten?
  • Warum wird das Datumsauswahl-Widget im Formularfeld nicht gerendert?

[Die folgenden Kommentare sind viel älter als diese Änderung]

    
bgarcial 02.02.2018, 06:19
quelle

1 Antwort

1

Sie verwenden django-bootstrap-datepicker-plus , das auf der DJango-Version & gt; = 1.8 funktioniert Es sollte also perfekt mit DJango Version 1.10.7 funktionieren. Wenn Sie alles richtig befolgt haben, wie auf der Installationsseite angegeben, sollten Sie die folgende Checkliste überprüfen, um festzustellen, ob alles vorhanden ist.

  

Checkliste, damit das Widget funktioniert

  • jQuery ist erforderlich, setzen Sie include_jquery auf True in Bootstrap-Einstellungen .
  • Stellen Sie sicher, dass die folgenden Tags im Kopfbereich von enthalten sind Ihre Mastervorlage.
%Vor%
  • Überprüfen Sie, ob sich der folgende Tagblock oben in Ihrer Formularvorlage befindet.
%Vor%
  

UPDATE: Fehler gefunden

Das Problem ist genau das, was Sie vermutet haben. "In meinem layout.html rufe ich einige zusätzliche cdn jQuery-Ressourcen zu anderen Dingen auf. Führt das zu Konflikten?"

Ich habe Ihre layout.html durchgesehen und zwei jQuery-Bibliotheken gefunden, eine in Zeile # 22, andere in Zeile # 299, und Sie sagten, Sie haben include_jquery -Option auf true gesetzt. Also ja, sie sind widersprüchlich. Der Datepicker ist an die von der Bootstrap-Option include_jquery geladene jQuery gebunden, und diese jQuery wird von der jQuery in Zeile # 299 überschrieben.

Die Lösung:

Die Lösung besteht darin, nur eine jQuery in Ihrer Vorlage zu behalten. Befreie alle jQuery in deiner Vorlage und behalte include_jquery auf true . Oder halten Sie nur einen jQuery in der Kopfzeile des Master-Templates vor anderen Skripten und setzen Sie include_jquery auf false .

    
Munim Munna 12.02.2018, 21:35
quelle