确定完整的Django URL配置
有没有一种方法来获取 完整的 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配置。import urls urls.urlpatterns
该列表
urls.urlpatterns
包含RegexURLPattern
和RegexURLResolver
对象。对于一个
RegexURLPattern
对象,p
您可以使用p.regex.pattern
对于表示包含的url配置的
RegexURLResolver
对象q
,您可以使用来显示正则表达式的第一部分q.regex.pattern
然后使用
q.url_patterns
这将返回
RegexURLResolver
和RegexURLPattern
对象的进一步列表。