【发布时间】:2014-04-10 00:25:45
【问题描述】:
每个具有唯一 url 的对象都应该有 get_absolute_url() ,它通常返回对象的详细视图。通常这些对象也有创建、更新和删除视图,并且 url 需要一些参数才能工作。您可以在模板中为这些 url 提供参数,但如果您更改了 url 结构等,您还必须更改所有模板而不是那个函数。那么:定义创建、编辑和删除 url 的方法是一种好习惯,还是这种方法存在一些问题?
考虑一个例子,我有一个博客,博客所有者可以向其中添加帖子、编辑和删除它们。 Post 有一个指向 blog 的外键。帖子的详细模板可以包含以下链接:
<a href="{% url 'post-edit' blog=post.blog.pk pk=post.pk %}">edit post</a>
<a href="{% url 'post-delete' blog=post.blog.pk pk=post.pk %}">delete post</a>
<a href="{{ post.blog.get_absolute_url }}">back to blog</a>
和网址:
url(r'^blog-(?P<blog>\d+)/post-(?P<pk>[-\w]+)/$', views.PostView.as_view(), name='post-view'),
url(r'^post-new/blog-(?P<blog>\d+)/$', views.CreatePostView.as_view(), name='post-new'),
url(r'^post-edit/blog-(?P<blog>\d+)/post-(?P<pk>\d+)/$', views.UpdatePostView.as_view(), name='post-edit',),
url(r'^post-delete/blog-(?P<blog>\d+)/post-(?P<pk>\d+)/$', views.DeletePostView.as_view(), name='post-delete',),
不是最好的例子,但我希望你明白我的意思。
【问题讨论】:
标签: django django-templates django-urls