我有Django url路由,如下所示:
app_name = 'courses'
urlpatterns = [
url(r'./(?P<courseid>[0-9]+)/$', views.viewcourse, name='view_course'),
url(r'./(?P<courseid>[0-9]+)/review/$', views.reviewcourse, name='review_course')
]
“。”在正则表达式中通常会被一个slug替换,例如:
courses/computer-science/3/
现在我需要在“视图课程”模板中添加一个链接,以便用户访问评论页面,即:
courses/computer-science/3/review/
我只需将review
附加到当前网址即可完成此操作:
{{ request.path }}review
但是,我宁愿使用模板网址标记
进行'正确'的方式 {% url 'courses:review_course' courseid=course.pk %}
但是,这会产生:
courses/30/review
,当然失败了。
是否可以使用{%url%}标记生成正确的链接,而无需更改“。”进入名称捕获参数?
答案 0 :(得分:0)
更改您的urls.py:
url(r'(?P<course_type>[a-z_-]+)/(?P<courseid>[0-9]+)/$', views.viewcourse, name='view_course')
现在在您的视图中,您可以访问kwargs中的course_type
,然后您可以加载任何您想要的内容(因为我没有代码,我猜你在做什么:)。
在你的模板中:
{% url 'courses:review_course' courseid=course.pk course_type=something%}