zoukankan      html  css  js  c++  java
  • 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这种,由于一篇文章的链接是固定的,所以看上去像静态页面一样 

  • 相关阅读:
    Avoiding the Backup of Online Redo Logs
    RMAN-20201: datafile not found in the recovery catalog
    ORA-15081: failed to submit an I/O operation to a disk
    字符串替换数字问题
    jstl换行符处理
    字符串匹配问题
    careercup题目20131013
    careercup题目20131010
    careercup题目201330928
    面试题(一)
  • 原文地址:https://www.cnblogs.com/China-YangGISboy/p/9045141.html
Copyright © 2011-2022 走看看