首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django url 反解析

Django url 反解析

作者头像
用户1416054
发布2018-08-02 11:43:53
7740
发布2018-08-02 11:43:53
举报
文章被收录于专栏:JackeyGao的博客JackeyGao的博客

Django url 反解析

Posted September 30, 2015

Django 是个python中web-framework MTV框架能够快速的开发网站, 刚开始学习django时候, 对于模版里面经常根据自己项目的urls来手写链接. 虽然这种方法是可行的, 但是不是规范的。 为什么呢? 最近公司要做一个django改造, 由于改造需求的原因, 项目urls统一加上项目名字 urls.py 中很简单, 在url前面加上就行. 但是很多的模版中的url都要改掉. 这就增加了改造的复杂度。 通过此次改造我发现 其实django中有一种很好的机制, 来通过urls中的viewname 来反解析url生成url.

他们分别是: django.core.urlresolvers.reversetemplatetags.url

django.core.urlresolvers.reverse

这个函数主要用在于python代码中, 详情请看下面案例

urls.py这里是一个对象详细页面, 需要两个参数. models.py中要通过viewname detail 来生成url.

urls.py

Python

urlpatterns = [
    ...
    url(r'^step/(?P<label>.*)/(?P<name>.*)$', step, name="detail"),
    ...
]

models.py

Python

class Step(models.Model):
    ......
    ......

    def get_absolute_url(self):
        return reverse('detail', kwargs={
            'label': self.label,
            'name': self.name}
        )

    def label_name(self):
        return self.label.name

    def __unicode__(self):
        return unicode(self.name)

    def __str__(self):
        return self.name

templatetags.url

这里还使用上面的urls.py 中的detail举例, 在模版中生成url

base.html

HTML

{% url "detail" step.label.name step.name %}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Django url 反解析
    • django.core.urlresolvers.reverse
      • urls.py
      • models.py
    • templatetags.url
      • base.html
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档