Jak mogę zobaczyć bieżące wzorce adresów URL, które są „odwrócone”?
Wzywam odwrócenie w widoku z argumentem, który moim zdaniem powinien działać, ale nie działa. W jakikolwiek sposób mogę sprawdzić, co tam jest i dlaczego nie ma mojego wzoru?
django
django-urls
django-views
interstar
źródło
źródło
Odpowiedzi:
Jeśli chcesz listę wszystkich adresów URL w swoim projekcie, najpierw musisz zainstalować rozszerzenia django , dodaj je do swoich ustawień w następujący sposób:
A następnie uruchom to polecenie w swoim terminalu
Więcej informacji można znaleźć w dokumentacji.
źródło
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
django_extensions
do swojegoINSTALLED_APPS
po instalacjiSpróbuj tego:
Lub jeśli nadal korzystasz z Django 1. *:
źródło
set(v[1] for k,v in get_resolver(None).reverse_dict.items())
django.core.urlresolvers
został usunięty w Django 2.0 , zamień linię importu nafrom django.urls import get_resolver
Rozwiązanie Django> = 2.0
Przetestowałem inne odpowiedzi w tym poście i albo nie działały z Django 2.X, były niekompletne lub zbyt złożone. Dlatego oto moje podejście do tego:
Ten kod drukuje wszystkie adresy URL, w przeciwieństwie do niektórych innych rozwiązań wyświetla pełną ścieżkę, a nie tylko ostatni węzeł. na przykład:
źródło
yield acc + [str(l.pattern)]
wiersz nayield acc + [str(l.pattern)], l.callback
. Pamiętaj, że zwróci on samą funkcję widoku, a nie nazwęDjango 1.11, Python 2.7.6
Następnie wklej następujący kod.
Przykładowe dane wyjściowe:
źródło
None
do wierszaurls = urlresolvers.get_resolver(None)
, a czasami otrzymywałem „Brak” na początku niektórych adresów URL.Na statusie aktywnym jest przepis
źródło
show_urls(urls.url_patterns)
.ModuleNotFoundError: No module named 'urls'
, nie wiem dlaczego?test.py
w katalogu głównym mojego projektu i ma ten błąd, również jeśli robię toimport urls
w tłumaczu, również otrzymuję ten błąd.import urls
jest to import lokalny, więc prawdopodobnie musisz to zrobićfrom app_name import urls
.Używam następnego polecenia:
(Python3 + Django 1.10)
Stosowanie:
Przykładowe dane wyjściowe:
źródło
print
. Zamiast tego użyjself.stdout.write
. docs.djangoproject.com/en/1.10/howto/custom-management-commandsJest wtyczka, której używam: https://github.com/django-extensions/django-extensions , ma polecenie show_urls, które może pomóc.
źródło
W powłoce Python manage.py
źródło
W Django 3.0 jest to tak proste, jak:
Wydruki:
[<URLPattern '' [name='home']>, <URLPattern '/testing' [name='another_url']>]
źródło
Rozszerzyłem polecenie Setiego, aby wyświetlić przestrzeń nazw, wszystkie części adresu URL, automatyczne dostosowanie szerokości kolumn, posortowane według (przestrzeń nazw, nazwa): https://gist.github.com/andreif/263a3fa6e7c425297ffee09c25f66b20
Aktualizacja: Nowa wersja z OrderedDict jest teraz dostępna w pakiecie django-🍌s: https://github.com/5monkeys/django-bananas/blob/master/bananas/management/commands/show_urls.py
źródło
Po prostu wpisz adres URL, o którym wiesz, że nie istnieje, a serwer zwróci komunikat o błędzie z listą wzorców adresów URL.
Na przykład, jeśli prowadzisz witrynę pod adresem http: // localhost: 8000 / coś
Wpisz
http: // localhost: 8000 / something / blahNonsense , a Twój serwer zwróci listę wyszukiwania adresów URL i wyświetli ją w przeglądarce
źródło
Minimalistyczne rozwiązanie dla django 2.0
Na przykład, jeśli szukasz adresu URL, który znajduje się w pierwszej aplikacji installed_apps, możesz uzyskać do niego dostęp w następujący sposób:
źródło
get_resolver
zdjango.core.urlresolvers
. Dzięki Marcio!Django 1.8, Python 2.7+ Po prostu uruchom te polecenia w swojej powłoce. Python manage.py shell i wykonaj następujący kod.
źródło
Możesz utworzyć dynamiczny import, aby zebrać wszystkie wzorce adresów URL z każdej aplikacji w projekcie za pomocą prostej metody, takiej jak:
list_of_all_url_patterns = get_url_patterns()
Niedawno użyłem czegoś takiego do utworzenia tagu szablonu do wyświetlania aktywnych linków nawigacyjnych.
źródło
Oto
your_main_app
nazwa aplikacji, w której znajduje się plik settings.pyźródło