如何替换re“。”在Django模板url标记

时间:2017-09-20 15:58:55

标签: django django-urls

我有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%}标记生成正确的链接,而无需更改“。”进入名称捕获参数?

1 个答案:

答案 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%}