首页 > 解决方案 > 反向 Django 管理 URL

问题描述

正如这个答案所描述的,我们可以使用url标签来反转 Django 管理 URL。但是,在此处显示的示例中,您需要传递给的字符串中的应用程序名称和模型名称url。有没有办法将它们作为参数传递?我想要做的是这样的:

{% url 'something here' app_name model_name object_id %}

我放'something here'什么?

标签: pythondjangodjango-templates

解决方案


我建议django_extensions使用它的show_urls命令来查找 url 名称。

简单地做

pip install django_extensions

然后添加django_extensions到您的 INSTALLED_APPS

#settings.py
INSTALLED_APPS = [
    #...
    'django_extensions',
]

然后你可以运行

python manage.py show_urls

您可以使用它grep来过滤掉您需要的相关 URL。例如

python manage.py show_urls | grep password
/admin/auth/user/<id>/password/  django.contrib.auth.admin.user_change_password  admin:auth_user_password_change
/admin/password_change/  django.contrib.admin.sites.password_change      admin:password_change
/admin/password_change/done/     django.contrib.admin.sites.password_change_done admin:password_change_done

并说我们想django.contrib.auth.admin.user_change_password在我们的模板中使用:

我们可以做的:

{% url "admin:auth_user_password_change" user.pk %}

PS您的生产环境并不真正需要django_extensions,因此您可能只想在本地安装它以供开发使用。


资源:

django_extensions 安装文档 django_extensions 命令


推荐阅读