我们假设我正在构建一个博客应用并创建以下网址模式:
url(r'^(?P<category>.+?)/(?P<date>.+)$', views.post_list, name='post_list'),
然后我创建了多个模板,随处可见:
{% url 'myapp:post_list' category date %}
但是我觉得嗯......我不想在那里约会,而是让它<category> and <slug>
。
然后我必须在我的模板中到处更改相应的{%url标记!
像这样重写url正则表达式会不会更好:
url(r'^(?P<url>.+?/.+)$', views.post_list, name='post_list'),
并在某处定义一些url_split()
函数,它会在视图中解析它,将url()
方法或属性添加到相应的模型中,并能够使用以下url标记:
{% url 'myapp:post_list' obj.url %}
因此,如果我想更改我的网址正则表达式/参数等内容,请不要触摸它们? 这是好的设计还是我错过了什么?
答案 0 :(得分:2)
但是我觉得嗯......我不想在那里约会,就这样吧 而是。
然后我必须在我的所有地方更改相应的{%url标签 模板!
为什么这是一个问题?
这是好的设计
不,不是:
来自xkcd # 974: