Django 的@permalink
和get_absolute_url
是什么?什么时候使用,why次使用?
请给出一个非常简单的例子(一个实际的例子).谢谢
Django 的@permalink
和get_absolute_url
是什么?什么时候使用,why次使用?
请给出一个非常简单的例子(一个实际的例子).谢谢
@permalink
是Python decorator,而get_absolute_url
是Django模型上的方法.
两者都涉及允许您反转特定对象的URL,应该一起使用.只要您需要提供指向特定对象的链接,或者想要向用户显示该对象的特定URL(如果有),就可以随时使用它们
您可以简单地编写get_absolute_url
方法来返回硬编码字符串,但这不符合Django的DRY哲学(不要重复).取而代之的是让事情变得更加灵活的@permalink
.
如果你读了the docs on the subject本书,你会发现它们是如何相互联系的.@permalink
修饰器连接到Django的URLconf的后端,允许您使用named url patterns编写更多可移植的代码.这比单独使用get_absolute_url
更可取:您的代码变得更加枯燥,因为您不必指定路径.
class BlogPost(models.Model):
name = modelsCharField()
slug = models.SlugField(...)
@permalink
def get_absolute_url(self):
return ("blog-detail", [self.slug,])
和urls.py中
...
url(r'/blog/(?P<slug>[-w]+)/$', blog.views.blog_detail, name="blog-detail")