Ich habe eine Django-Site gebaut, die live im Hintergrund leben wird. Im Moment funktioniert es perfekt an der IP-Adresse. Zu Testzwecken hat der Client auf eine Proxy-URL hingewiesen, aber die URL enthält / Ordner / Pfad, sodass keines der URL-Muster übereinstimmt. Ich lege (/ Ordner / Pfad)? in alle URL-Muster, so dass sie jetzt reagieren, aber alle Links sind gebrochen, weil ich das {% url%} - Tag verwende und während die URL-Muster mit dem optionalen Pfad übereinstimmen, enthalten sie es nicht in diesem Tag.
Natürlich kann ich einfach / code / Ordner / Pfad in alle meine URLs (nun, in alle URL-Includes) schreiben, bis der Test abgeschlossen ist, aber gibt es einen besseren Weg, dies zu tun?
Sie verwalten dies, wenn Sie Ihre Anwendung bereitstellen, indem Sie WSGIScriptAlias
korrekt in Ihrer Apache-Konfiguration festlegen (vorausgesetzt, Sie verwenden mod_wsgi, was Sie tun sollten). Dies wird an Django übergeben, das dann automatisch allen URL-Reverse-Lookups den korrekten Wert voranstellt. Sie sollten keine manuelle Mucking mit Präfixe tun müssen.
Zu diesem Zweck verwende ich URL_PREFIX in settings.py und füge es in jedem Include in urls.py hinzu. Ich füge es auch am Anfang von MEDIA_URL hinzu, damit alle Bilder / css / js Verbindungen funktionieren. Aber ich würde auch gerne etwas mehr knifflige Lösung hören?
Wenn WSGIScriptAlias nicht funktioniert oder Sie es aus irgendeinem Grund nicht einrichten können, denken Sie daran, dass die Funktion include () in einer URL-Verknüpfung das Präfix allen URLs hinzufügt. Sie können eine urlconf erstellen, die Ihre aktuelle root urlconf enthält, und sie an das Präfix anhängen und dann Ihre settings.py Datei auf diese urlconf verweisen.
Disclaimer: habe das selbst nicht versucht, aber es sollte funktionieren.
Tags und Links django django-urls