/ / Django im Unterverzeichnis - Python, Django, URL

Django im Unterverzeichnis - Python, Django, URL

Wenn ich meine django-Anwendung erstelle, verwende ich den runserver-Befehl, um meine Website zu testen, aber bei der Bereitstellung sage ich, dass ich meine Website unter www.test.com/django veröffentlichen werde.

Mein IIS wird mit einer Anwendung auf meiner Standard-Website namens "django" konfiguriert.

Ich erwarte, dass alles gut funktioniert, aber django erkennt mein URL-Schema nicht, das ist das folgende:

urlpatterns = [
# Examples:
url(r"^$", app.views.home, name="home"),
url(r"^contact$", app.views.contact, name="contact"),
url(r"^about", app.views.about, name="about"),
]

und in diesem fall muss ich meine urlpatterns so modifizieren, um die anwendung über www.test.com/django zu bedienen:

urlpatterns = [
url(r"^(?i)django/", include([ #Application name
# Examples:
url(r"^$", app.views.home, name="home"),
url(r"^contact$", app.views.contact, name="contact"),
url(r"^about", app.views.about, name="about"),
])),
]

Es ist ein guter Ansatz? Es funktioniert, aber ich bin mir nicht sicher über die Qualität dieser Lösung.

Antworten:

0 für die Antwort № 1

Die bevorzugte Methode, dies zu beheben, besteht darin, dass Ihr Webserver die Datei übergeben hat SCRIPT_NAME wsgi Variable. Django wird diese Variable automatisch als Präfix beim Erstellen von URLs verwenden, ohne dass Sie Ihre URL-Konfiguration ändern müssen. Ich bin mit IIS nicht vertraut, daher kann ich Ihnen nicht sagen, wie Sie das tun. Es hat den Vorteil, dass Ihr Code absolut unabhängig von dem eigentlichen Bereitstellungspunkt Ihrer WSGI-Anwendung ist, da der Skriptname an Django übergeben und nicht in den Einstellungen konfiguriert wird.

Alternativ können Sie die FORCE_SCRIPT_NAME Einstellung auf /django/.