django 模板中url的处理

Posted Python,Docker,Linux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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/

以上是关于django 模板中url的处理的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 django 模板上下文处理器中访问 url kwargs 吗?

使用 Django 模板作为片段

如何在 Django 中显式重置模板片段缓存?

JavaScript 片段在 Django 模板中不起作用

Django框架入门之视图和URL模板

如何在扩展另一个文件的 django 模板中使用带有动态内容的 html 块片段?