Django 2.2.3 如何获取所有 urls 模式和所有视图名称

Posted

技术标签:

【中文标题】Django 2.2.3 如何获取所有 urls 模式和所有视图名称【英文标题】:Django 2.2.3 How get all urls patterns and all views name 【发布时间】:2019-11-15 19:18:23 【问题描述】:

我使用 Django == 2.2.3 编写应用程序

现在我想获取我所有项目的所有 urls_patterns 和关联的视图名称。

我怎样才能得到这样的东西:

    urls_patterns_view_names_list = [
        ("view_name", "view_name: url_pattern"),
        ...,
        ...,
        ...,
]

我已经看到几个关于 url 模式问题的主题,但没有一个对应并做我想做的事。在大多数情况下,我的情况的答案非常陈旧且令人着迷。这就是我重新提出我的问题的原因:我希望有 urls 模式,并为每个 url 关联他的视图名称:如何在 python 3.7 上使用 Django 2.2.3 来做到这一点?

【问题讨论】:

Django : How can I see a list of urlpatterns?的可能重复 情况不一样!在回答之前阅读...而且您的主题非常古老,不符合我想做的事情..... @NathanIngram 如果有些东西是旧的,那不一定是错的。老年人有时是最聪明的人。 请教如何在views.py中使用django-extension 【参考方案1】:

您可以通过django-extensions 实现此目的:

pip install django-extensions

然后在settings.py:

INSTALLED_APPS = [
    ...
    'django_extensions',
    ...
]

最后在你的命令行中:

./manage.py show_urls


这将得到您想要的结果。来自包文档:

show_urls:为项目生成一个以制表符分隔的 (url_pattern, view_function, name) 元组列表。

【讨论】:

@NathanIngram 你可以通过这个方法得到你想要的结果。是否使用它取决于您。 “我想要 urls 模式,并为每个 url 关联他的视图名称”【参考方案2】:

这不是直接微不足道的,但我编写了一个模块 https://github.com/valohai/django-urr,它具有用于工作和遍历 Django URL 解析器的实用程序。

如果你最终使用它,你可以使用

for entry in django_urr.extract_urls():
    print(vars(entry))

– 查看here 了解entrys 的所有内容。

【讨论】:

但是如何获取视图名称? 那就是entry.name @NathanIngram 如果您对这个答案感到满意,请不要忘记投票并将其标记为正确。 谢谢你向我推荐了我可以在哪里找到我的答案......你的应用程序很棒。但这并不是我真正要问的...谢谢我的兄弟...

以上是关于Django 2.2.3 如何获取所有 urls 模式和所有视图名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 模板中获取当前 URL?

如何在 Django 模板中获取当前 URL?

捕获 Django views.py 中的所有 URL 参数?

django2获取url所有路径

获取Django项目的全部url

如何从 django 视图中的绝对 url 获取相对 url?