Django中URL有关 django 模板中url的处理

django 模板中url的处理

 

在模板中直接添加‘/home’这样的链接是十分不推荐的,因为这是一个相对的链接,在不同网页中打开可能会返回不一样的结果。

所以推荐的是

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

这种方式,或者

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

这里第二种方式同时需要在urls.py中设置,

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

同时对应的article_view应该有2个参数(request, pk)

  

get_absolute_url是一个方法,需要在model里声明一下;下面是官方的推荐使用方式

不推荐

1
2
# 不推荐<br>def get_absolute_url(self):
     return  "/people/%i/"  %  self . id <br> # 推荐
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方法如

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

alias是自己设置的,生成的链接就是: http://example.com/alias这种,由于一篇文章的链接是固定的,所以看上去像静态页面一样 

在模板中直接添加‘/home’这样的链接是十分不推荐的,因为这是一个相对的链接,在不同网页中打开可能会返回不一样的结果。

所以推荐的是

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

这种方式,或者

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

这里第二种方式同时需要在urls.py中设置,

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

同时对应的article_view应该有2个参数(request, pk)

  

get_absolute_url是一个方法,需要在model里声明一下;下面是官方的推荐使用方式

不推荐

1
2
# 不推荐<br>def get_absolute_url(self):
     return  "/people/%i/"  %  self . id <br> # 推荐
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方法如

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

alias是自己设置的,生成的链接就是: http://example.com/alias这种,由于一篇文章的链接是固定的,所以看上去像静态页面一样 

猜你喜欢

转载自www.cnblogs.com/China-YangGISboy/p/9045141.html