【问题标题】:Django admin site with url parameters带有 url 参数的 Django 管理站点
【发布时间】:2014-09-27 14:32:16
【问题描述】:

我有一个包含多个应用程序的 Django 项目,我想为其中一个应用程序添加 Django 管理站点。

我遇到的问题是 urls.py 主文件有

url(r'^tools/(\w+)/', include('tools.myapp.urls')),

并在我的myapp.urls 中添加了

url(r'^admin/', include(admin.site.urls)),

问题是url匹配的父部分使用了参数,一般是这样在模板中传递的(也就是应用名)

{% url "my_view_function" request.info.appname %}

但是默认的 Django 模板在调用时显然不包含那个额外的参数

{% url 'admin:logout' %}

从而导致NoReverseMatch 异常。

如何让管理站点正常工作?

【问题讨论】:

    标签: python django django-admin url-parameters


    【解决方案1】:

    如果您只想让管理员在任何工具/whatever/admin URL 下运行,您可以在主 urls.py 中的 tools.myapp.urls 导入之前添加这一行

    url(r'^tools/\w+/admin/', include(admin.site.urls)),
    

    【讨论】:

    • 我需要 URL 的 (\w+) 捕获组,因为站点的其他部分需要它。
    • 这就是为什么您需要在tools.myapp.urls 之前添加这个,而不是代替它。您的应用会很好地获取捕获的参数,只有管理员不会。
    猜你喜欢
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2021-06-07
    • 1970-01-01
    • 2021-12-19
    • 2011-09-23
    相关资源
    最近更新 更多