2016-04-13 11 views
0

Ich benutze das Standard-Authentifizierungssystem von Django (v1.8.12), aber ich möchte meine eigenen Vorlagen erstellen (eigentlich gemäß der Dokumentation django.contrib.auth keine Vorlage bereitstellen).Django: Vorlagensuchreihenfolge für das Authentifizierungssystem (um eigene Authentifizierungsvorlagen zu erstellen)

Dann habe ich den Ordner 'Registrierung' im Ordner 'Templates' meiner Anwendung 'mainApp' hinzugefügt. Laut der Dokumentation ist dies der richtige Ort, ein Ordner namens "Registrierung".

Ich habe auch die Vorlage 'login.html' erstellt, und diese Vorlage wird ordnungsgemäß in der definierten URL '... account/login' geladen.

Das Problem ist mit den anderen Vorlagen:

  • logged_out.html
  • password_change_done.html
  • password_change_form.html
  • password_reset_complete.html
  • password_reset_confirm.html
  • password_reset_done. html
  • password_reset_email.html
  • password_reset_form.html

Die vorherigen Vorlagen werden von der 'admin' Anwendung und nicht von meiner app geladen.

Wie kann ich Django mitteilen, dass meine Registrierungsvorlagen geladen werden sollen und nicht die in der Admin-Anwendung definierten Vorlagen?

Mein Projekt url.py ist

urlpatterns = [ 
    url(r'^', include('mainApp.urls', namespace="mainApp")), 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^account/', include('django.contrib.auth.urls')), 
] 

Meine Vorlage Einstellungen sind die Standardeinstellungen

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'debug': True, 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
     }, 
    }, 
] 
+0

OK. Ich habe es gerade in den Vorlageneinstellungen versucht und arbeite jetzt ''DIRS': ['mainApp/templates'],'. Jedenfalls bin ich offen für eine allgemeinere Lösung, die Sie mir geben können :). – ePi272314

+0

Update der vorherigen Lösung funktioniert nicht in der Produktion (ich meine auf dem Server) – ePi272314

Antwort

1

Gerade mainApp oben django.contrib.admin in Ihrer INSTALLED_APPS Einstellung bewegen, so dass Django das mainApp/templates Verzeichnis zuerst durchsucht.

Auf diese Weise müssen Sie mainApp/templates nicht zu Ihrer DIRS Einstellung hinzufügen.

+0

Vielen Dank für die schnelle Antwort. Gibt es irgendwelche negativen Auswirkungen meiner App an den Anfang von "INSTALLED_APPS" hinzufügen? Ich denke, die Dokumentation empfiehlt, unsere eigenen Apps am Ende der Standardliste hinzuzufügen. – ePi272314

+0

Es sollte die meiste Zeit in Ordnung sein, solange Sie wissen, dass die Vorlagen, statischen Dateien usw. Ihrer App zuerst ausgewählt werden. Gelegentlich kann es zu einem Abhängigkeitsproblem kommen, wenn Sie zum Beispiel 'admin.site.unregister (User) 'aufrufen und Ihren eigenen Modelladministrator für' Benutzer 'registrieren. In diesem Fall müsste Ihre App unter "django.contrib.auth" gehen. – Alasdair

Verwandte Themen