「リバース」が調べている現在の urlpatterns を確認するにはどうすればよいですか?
ビューでリバースを呼び出していますが、機能すると思われる引数を使用していますが、機能しません。そこに何があり、なぜ私のパターンがないのかを確認する方法はありますか?
「リバース」が調べている現在の urlpatterns を確認するにはどうすればよいですか?
ビューでリバースを呼び出していますが、機能すると思われる引数を使用していますが、機能しません。そこに何があり、なぜ私のパターンがないのかを確認する方法はありますか?
プロジェクト内のすべての URL のリストが必要な場合は、最初に django-extensions をインストールする必要があります
コマンドで簡単にインストールできます。
pip install django-extensions
パッケージに関連する詳細については、django-extensionsに移動してください
その後、次のようにファイルに追加django_extensions
しINSTALLED_APPS
ます。settings.py
INSTALLED_APPS = (
...
'django_extensions',
...
)
urls.py の例:
from django.urls import path, include
from . import views
from . import health_views
urlpatterns = [
path('get_url_info', views.get_url_func),
path('health', health_views.service_health_check),
path('service-session/status', views.service_session_status)
]
そして、ターミナルでいずれかのコマンドを実行します
python manage.py show_urls
また
./manage.py show_urls
構成 urls.py に基づく出力例:
/get_url_info django_app.views.get_url_func
/health django_app.health_views.service_health_check
/service-session/status django_app.views.service_session_status
詳細については、ドキュメントを確認してください。
これを試して:
from django.urls import get_resolver
get_resolver().reverse_dict.keys()
または、まだ Django 1.* を使用している場合:
from django.core.urlresolvers import get_resolver
get_resolver(None).reverse_dict.keys()
アクティブステートにレシピがあります
import urls
def show_urls(urllist, depth=0):
for entry in urllist:
print(" " * depth, entry.regex.pattern)
if hasattr(entry, 'url_patterns'):
show_urls(entry.url_patterns, depth + 1)
show_urls(urls.url_patterns)
私が使用しているプラグインがあります: https ://github.com/django-extensions/django-extensions 、それは役立つかもしれないshow_urlsコマンドを持っています。
@CesarCanassa から採用
from django.conf import settings
from django.urls import URLPattern, URLResolver
URLCONF = __import__(settings.ROOT_URLCONF, {}, {}, [''])
def list_urls(patterns, path=None):
""" recursive """
if not path:
path = []
result = []
for pattern in patterns:
if isinstance(pattern, URLPattern):
result.append(''.join(path) + str(pattern.pattern))
elif isinstance(pattern, URLResolver):
result += list_urls(pattern.url_patterns, path + [str(pattern.pattern)])
return result