Wie kann ich die aktuellen URL-Muster sehen, in denen "reverse" angezeigt wird?
Ich rufe Reverse in einer Ansicht mit einem Argument auf, von dem ich denke, dass es funktionieren sollte, aber nicht. Wie kann ich überprüfen, was da ist und warum mein Muster nicht?
django
django-urls
django-views
Interstar
quelle
quelle
Antworten:
Wenn Sie eine Liste aller URLs in Ihrem Projekt wünschen, müssen Sie zuerst Django-Erweiterungen installieren und diese wie folgt zu Ihren Einstellungen hinzufügen:
Führen Sie dann diesen Befehl in Ihrem Terminal aus
Weitere Informationen finden Sie in der Dokumentation.
quelle
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
django_extensions
IhreINSTALLED_APPS
nach der Installation hinzufügenVersuche dies:
Oder wenn Sie noch auf Django 1 sind. *:
quelle
set(v[1] for k,v in get_resolver(None).reverse_dict.items())
django.core.urlresolvers
wurde in Django 2.0 entfernt , ersetzen Sie die Importlinie durchfrom django.urls import get_resolver
Django> = 2.0 Lösung
Ich habe die anderen Antworten in diesem Beitrag getestet und sie funktionierten entweder nicht mit Django 2.X, unvollständig oder zu komplex. Deshalb hier meine Meinung dazu:
Dieser Code druckt alle URLs, im Gegensatz zu einigen anderen Lösungen wird der vollständige Pfad und nicht nur der letzte Knoten gedruckt. z.B:
quelle
yield acc + [str(l.pattern)]
Zeile in ändern könnenyield acc + [str(l.pattern)], l.callback
. Denken Sie daran, dass es die Ansichtsfunktion selbst und keinen NamenDjango 1.11, Python 2.7.6
Fügen Sie dann den folgenden Code ein.
Beispielausgabe:
quelle
None
die Zeile aufnehmen mussteurls = urlresolvers.get_resolver(None)
, und manchmal wurde am Anfang einiger URLs "Keine" angezeigt.Es gibt ein Rezept für Activestate
quelle
show_urls(urls.url_patterns)
.ModuleNotFoundError: No module named 'urls'
, weiß nicht warum?test.py
im Stammverzeichnis meines Projekts abgelegt und habe diesen Fehler. Auch wenn ich diesimport urls
im Interpreter tue , wird dieser Fehler ebenfalls angezeigt.import urls
handelt sich um einen lokalen Import, daher müssen Sie dies wahrscheinlich tunfrom app_name import urls
.Ich benutze den nächsten Befehl:
(Python3 + Django 1.10)
Verwendung:
Beispielausgabe:
quelle
print
. Verwenden Sie stattdessenself.stdout.write
. docs.djangoproject.com/de/1.10/howto/custom-management-commandsIch verwende ein Plugin: https://github.com/django-extensions/django-extensions . Es enthält einen Befehl show_urls, der helfen könnte.
quelle
In der Python-Shell "manage.py"
quelle
In Django 3.0 ist es so einfach wie:
Drucke:
[<URLPattern '' [name='home']>, <URLPattern '/testing' [name='another_url']>]
quelle
Ich habe den Befehl von Seti erweitert , um den Namespace, alle URL-Teile und die Spaltenbreiten automatisch anzupassen, sortiert nach (Namespace, Name): https://gist.github.com/andreif/263a3fa6e7c425297ffee09c25f66b20
Update: Eine neue Version mit OrderedDict befindet sich jetzt im Paket von django: https://github.com/5monkeys/django-bananas/blob/master/bananas/management/commands/show_urls.py
quelle
Geben Sie einfach eine URL ein, von der Sie wissen, dass sie nicht vorhanden ist, und der Server gibt eine Fehlermeldung mit einer Liste von URL-Mustern zurück.
Zum Beispiel, wenn Sie eine Site unter http: // localhost: 8000 / Something ausführen
Eintippen
http: // localhost: 8000 / Something / blahNonsense , und Ihr Server gibt die URL-Suchliste zurück und zeigt sie im Browser an
quelle
Minimalistische Lösung für Django 2.0
Wenn Sie beispielsweise nach einer URL suchen, die in der ersten App von installierten_Apps enthalten ist, können Sie folgendermaßen darauf zugreifen:
quelle
get_resolver
ausdjango.core.urlresolvers
. Danke Marcio!Django 1.8, Python 2.7+ Führen Sie diese Befehle einfach in Ihrer Shell aus. Python verwalten.py Shell und führen Sie den folgenden Code.
quelle
Sie können einen dynamischen Import erstellen, um alle URL-Muster aus jeder Anwendung in Ihrem Projekt mit einer einfachen Methode wie der folgenden zu erfassen:
list_of_all_url_patterns = get_url_patterns()
Ich habe kürzlich so etwas verwendet, um ein Vorlagen-Tag zu erstellen, auf dem aktive Navigationslinks angezeigt werden.
quelle
Hier
your_main_app
ist der App-Name, unter dem sich Ihre Datei settings.py befindetquelle