2014-11-05 88 views

回答

1

它不是特定於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 }}