有没有办法获得完整的 Django URL配置?
例如,Django的调试404页面未显示包含的url配置,因此这不是完整的配置。
答:感谢Alasdair,这是一个示例脚本:
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.urlpatterns)
Django是Python,因此内省是你的朋友。
在外壳中,导入urls。通过循环浏览urls.urlpatterns并尽可能深入地查看所包括的url配置的各个层,你可以构建完整的url配置。
urls
urls.urlpatterns
import urls urls.urlpatterns
该列表urls.urlpatterns包含RegexURLPattern和RegexURLResolver对象。
RegexURLPattern
RegexURLResolver
对于一个RegexURLPattern对象,p你可以使用
p
p.regex.pattern
对于代表包含的url配置的RegexURLResolver对象q,你可以使用来显示正则表达式的第一部分
q
q.regex.pattern
然后使用
q.url_patterns
这将返回RegexURLResolver和RegexURLPattern对象的进一步列表。
Django扩展提供了一个实用程序,作为manage.py命令来执行此操作。
pip install django-extensions
然后在中将其添加django_extensions到你的INSTALLED_APPS中settings.py。然后从控制台中键入以下内容
django_extensions
settings.py
python manage.py show_urls