gpt4 book ai didi

python - 为什么 get_absolute_url() 定义在 models.py 中?

转载 作者:太空宇宙 更新时间:2023-11-03 18:06:42 25 4
gpt4 key购买 nike

我正在尝试使用基于类的 View (CBV)重做我的应用程序 View ,并偶然发现了在 models.py 中定义的 get_absolute_url() 函数,generic editing views

我创建过模型,但以前从未使用过此功能。这是 CBV 特有的吗?

最佳答案

它并非特定于 CBV,您可以在应用程序中的任何位置使用它。它使得获取模型实例的 url 变得更加容易,而不必搞乱 url 解析。此外,当您可以对对象本身调用 get_absolute_url 时,在模板中获取对象的明确 url 会容易得多。例如,如果您正在循环访问对象列表:

{% for post in blog_posts %}
<a href="{{ post.get_absolute_url }}">read post</a>
{% endfor %}

也就是说,没有什么可以阻止您使用您 View 中的方法:

post = BlogPost.objects.get(...)
url = post.get_absolute_url()

不过该方法也没有什么特别之处。如果您愿意,您可以编写自己的 get_foo_url()。例如我wrote a blog post about a get_admin_url ,一种允许您获取对象的 Django 管理 url 的方法:

class Book(models.Model):
...
def get_admin_url(self):
content_type = ContentType \
.objects \
.get_for_model(self.__class__)
return reverse("admin:%s_%s_change" % (
content_type.app_label,
content_type.model),
args=(self.id,))

# {{ book.get_admin_url }}

关于python - 为什么 get_absolute_url() 定义在 models.py 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26750288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com