url匹配规则:从上至下,以此匹配,如果匹配成功就不继续往下匹配了,如果匹配失败,继续匹配,直到匹配成功为止,如果没有匹配的对应规则,则报错。
1、完全匹配
urlpatterns = [ url(r'^admin/', include(admin.site.urls)), #admin后台admin路由,默认存在的 url(r'^index/',views.index),2、无命令分组
urls.py
url(r'(\d{4})$',views.year), url(r'(\d{4})/(\d{2})',views.year_m),views.py
def year(request,y): print y return HttpResponse(str(y)+'年') def year_m(request,y,m): print y,m return HttpResponse(str(y)+'年'+str(m)+'月')
3、命名分组
urls.pyurl(r'(?P<year>\d{4})/(?P<month>\d{2})',views.year_n),views.py
month,year的顺序可以变,无命名分组顺序不可以变
def year_n(request,month,year): return HttpResponse(str(year)+'年'+str(month)+'月')
def year_n(request,month,year): return HttpResponse(str(year)+'年'+str(month)+'月')
3、url控制系统
3.1、别名
urls.py
url(r'^index/',views.index,name='dis_index'),html
<form action="{% url 'dis_index' %}" method="post"> {% csrf_token %} <p><input type="text" name="username"/><br></p> <p><input type="password" name="password"/><br></p> <input type="submit" value="提交"/> </form>
3.2、不同app定义不同二级url
root urls.py
url(r'app01/',include('app01.urls')),app01/urls.py
url(r'^index/',views.index,name='dis_index'),http访问加上项目名
http://127.0.0.1:8000/app01/index/