【问题标题】:get_absolute_url and url template tagget_absolute_url 和 url 模板标签
【发布时间】:2013-08-13 12:58:07
【问题描述】:

我想了解使用 get_absolute_url 调用而不是 url 模板标签有什么好处。

get_absolute_url:

class Project(models.Model):

   @permalink
   def get_absolute_url(self):
       return ('view_project', (), {'project_id': self.pk})

<a href="{{ project.get_absolute_url }}"> {{ project.name }}</a>

url模板标签:

<a href="{% url 'view_project' project.pk %}"> {{ project.name }}</a>

感谢您的帮助,

胡里奥

【问题讨论】:

    标签: python django url


    【解决方案1】:

    唯一明显的优势是您可以更改该模型的 url 名称,而无需重写所有模板。此外,如果您定义了 get_absolute_url 函数(不过,您不必在模板中使用它),这会提供一些额外的好处,例如在 Django 的管理员中添加 View on site 按钮或为类提供后备成功 url-基于模型形式的视图。

    但是,get_absolute_url 和一般模型的 URL 是 ongoing point of discussion

    【讨论】:

    【解决方案2】:

    如果“定位”仅在一个地方(即模型中),我发现在模板中管理我的所有 url 会更容易。所以每次我需要一个与对象相关的 url 时,我都会使用 get_absolute_url。

    但由于 Django 1.5 @permalink 已弃用,您必须改用 reverse()。请check documentation

    【讨论】:

      猜你喜欢
      • 2017-09-18
      • 2015-10-14
      • 2023-03-09
      • 2010-12-19
      • 2012-03-31
      • 2011-10-22
      • 2010-09-20
      • 2012-09-10
      • 1970-01-01
      相关资源
      最近更新 更多