1
我想我重做一類具有爲本次(CBV)的應用程序的意見和跨越這個功能get_absolute_url跌跌撞撞()在models.py被定義,generic editing views爲什麼在models.py中定義了get_absolute_url()?
我已經創建模型和之前從未使用過此功能。這是特定於CBV嗎?
我想我重做一類具有爲本次(CBV)的應用程序的意見和跨越這個功能get_absolute_url跌跌撞撞()在models.py被定義,generic editing views爲什麼在models.py中定義了get_absolute_url()?
我已經創建模型和之前從未使用過此功能。這是特定於CBV嗎?
它不是特定於CBV,您可以在應用程序的任何位置使用它。它使得更容易獲取模型實例的url,而不必亂搞url解析。此外,當您可以在對象上調用get_absolute_url
時,在模板中獲取對象的權威url更容易。例如,如果你是通過對象的列表循環:
{% for post in blog_posts %}
<a href="{{ post.get_absolute_url }}">read post</a>
{% endfor %}
這就是說,沒有什麼使用方法在您的視圖阻止您:
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 }}
這只是一個方法的例子。沒有其他的。 – 2014-11-05 05:31:28