django 模板中url的處理


在模板中直接添加‘/home’這樣的鏈接是十分不推薦的,因為這是一個相對的鏈接,在不同網頁中打開可能會返回不一樣的結果。

所以推薦的是

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

這種方式,或者

<a href={% url 'article' article.pk %} >

這里第二種方式同時需要在urls.py中設置,

url(r'^article/(?P<pk>[0-9]+)/$', article, name='article'),

同時對應的article_view應該有2個參數(request, pk)

  

 

get_absolute_url是一個方法,需要在model里聲明一下;下面是官方的推薦使用方式

 

不推薦

# 不推薦
def get_absolute_url(self): return "/people/%i/" % self.id
# 推薦
def get_absolute_url(self): from django.core.urlresolvers import reverse return reverse('people.views.details', args=[str(self.id)])

# 不推薦
def get_absolute_url(self): return '/%s/' % self.name

<!-- BAD template code. Avoid! -->
<a href="/people/{{ object.id }}/">{{ object.name }}</a>

# 推薦
<a href="{{ object.get_absolute_url }}">{{ object.name }}</a> 

 

  

更具體的可以參考一下 https://github.com/the5fire/django_selfblog/blob/master/selfblog/blog/models.py

這里作者使用了“偽靜態url”,get_absolute_url方法如下:

def get_absolute_url(self):
        return '%s/%s.html' % (settings.DOMAIN, self.alias)

alias是自己設置的,生成的鏈接就是: http://example.com/alias這種,由於一篇文章的鏈接是固定的,所以看上去像靜態頁面一樣  

  

參考鏈接:

https://github.com/the5fire/django_selfblog

http://huacnlee.com/blog/django-url-routes-and-get-absolute-url/

https://docs.djangoproject.com/en/1.9/ref/models/instances/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM