django.core.urlresolvers (django 1.7)
url()
url()函数有四个参数,regex,view,kwargs,name.前面两个是必须的
- regex: 是用来匹配url的正则
- view: 正则匹配之后调用的view函数,参数是HttpRequest,也可以从正则里面抓取参数
- name: 给url起名字,可以在其他地方引用
reverse()
reverse(viewname[,urlconf=None, args=None, kwargs=None, current_app=None])
reverse是用url来逆向解析访问试图view的方法
比如现在有一个url:
url(r'^archive/$', 'news.views.archive', name='news_archive')
可以用下面几种方法来进行reverse:
# using the python path reverse('news.views.archive') # using the named URL reverse('news_archive') # passing a callable obj from news import views reverse(views.archive)
reverse的url可以带有参数args或者关键字参数kwargs,但是两种参数不能同时存在:
from django.core.urlresolvers import reverse def myview(request): return HttpResponseRedirect(reverse('arch-summary', args=[1945]))
这个例子重定向到另一个view并且传递参数
如果找不到匹配,reverse()产生NoReverseMatch
异常