Django url 反解析

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 %}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏vue学习

后来的我们—我与git的破镜重圆

因为git给远程库起的默认名称是origin,所以如果有多个远程库,我们需要用不同的名称来标识不同的远程库。

1072
来自专栏BeJavaGod

Spring v4.1+ JSONP使用,以及jQuery跨域调用jsonp

(补充:我擦,微信不支持代码复制,我的发!还是截图吧~) 如今的巨石应用已经越来越不行了,很多互联网在后期都会在用分布式的架构 那么在页面上不同的服务调用不同域...

32910
来自专栏软件开发 -- 分享 互助 成长

source insigt、pc-lint、VS联合使用

前言:     近几天参加公司培训,公司要求,开发的时候使用source insight、PC-lint和VC来编程和调试,这不用不知道,一用吓一跳,这套工具一...

3189
来自专栏AndroidTv

如何用Android Studio查看build.gradle源码

上一篇博客里讲过 build.gradle 里的每一行代码基本都是在调用一个方法,既然是这样,我们就可以用 android studio(下面简称as) 去查看...

51110
来自专栏coding for love

git基础之github使用入门

参加实习以后,开始接触多人协作开发工具,前期主要是svn,现在工作中已经全面使用git。公司的项目目前放在gitlab上,所以平时涉及的操作比较简单,加之之前s...

872
来自专栏生信技能树

生信菜鸟团博客2周年精选文章集(2)wordpress的代码高亮

能做到代码高亮的插件实在是太多了,我这里随便选择一个。首先在wordpress的插件里面查找SyntaxHighlighter Evolved这个插件。 ? 下...

2797
来自专栏零基础使用Django2.0.1打造在线教育网站

零基础使用Django2.0.1打造在线教育网站(三):Django基础知识回顾

努力与运动兼备~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

3452
来自专栏Java架构

微服务架构的稳定性与数据一致性能如何快速提高?

1975
来自专栏肖洒的博客

Python-Opencv的安装

Windows下安装python2和python3双版本 Python2的Opencv的安装 Python整出的向下不兼容简直是败笔,无奈,还是要处理。 一...

2665
来自专栏逸鹏说道

07.GitHub实战系列~7.Git之VS2013团队开发(如果不想了解git命令直接学这篇即可)

GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ————————————————————...

2805

扫码关注云+社区

领取腾讯云代金券