如何修改Django模板链接以生成指定格式的正确URL
解决Django模板URL格式问题的步骤
别着急,三天的困扰肯定不好受,咱们一步步来解决这个问题:
1. 先调整urls.py的路径配置
你想要的目标URL是https://mysite.ua/main/client_account/1/user_main_accounts,这个结构是client_account/<pk>/user_main_accounts/,但你现有的urls.py里只有两个独立的路径,所以得先添加一个匹配这个结构的路径。
打开main应用下的urls.py,添加一条新的路径(保留你原有的两条路径):
# main/urls.py from django.urls import path from . import views app_name = 'main' urlpatterns = [ # 你原有的两条路径 path('user_main_account/<int:pk>/', views.user_main_account_view, name='user-main-account'), path('client_account/<int:pk>/', views.client_account_view, name='client-account'), # 新增的路径,对应目标URL结构 path('client_account/<int:pk>/user_main_accounts/', views.your_user_main_accounts_view, name='client-account-user-main-accounts'), ]
注意这里的name='client-account-user-main-accounts'是关键,后面模板里要用到这个名称;views.your_user_main_accounts_view替换成你实际处理这个请求的视图函数。
2. 修改模板里的URL标签
原来的链接生成的是带查询参数的URL,现在我们要改成路径参数的格式,直接调用新增的URL名称并传递参数:
把模板里的代码:
<a href="{% url 'main:user-main-account' %}?=client_account{{ client_account.id }}">
替换成:
<a href="{% url 'main:client-account-user-main-accounts' pk=client_account.id %}">
这样生成的URL就会是你想要的https://mysite.ua/main/client_account/1/user_main_accounts格式了。
小提示
- 确保新增路径对应的视图函数能正确接收
pk参数(也就是client_account的id),处理对应的业务逻辑。 - 如果你的
main应用是挂载在项目根urls.py的main/路径下(比如path('main/', include('main.urls'))),那生成的URL就会自动带上main/前缀,正好符合你的需求。
内容的提问来源于stack exchange,提问作者Димаста Вайтстар
相关产品推荐
相关产品推荐

