URL路由简介对于高质量的Web应用程序,使用简单优雅的URL路由是一个值得尊重的细节。Django可以随心所欲地设计URL,不受框架的约束。要为应用程序设计URL,您需要一个Python模块,通常称为URLconf,该模块是纯URL模式(简单正则表达式)到python函数(视图函数)的简单映射Django如何处理请求是django.conf.urls.url()实例的python列表。Django依次匹配每个URL,在第一个匹配请求URL的url处停止。一旦其中一个正则表达式匹配,Django将导入并调用所有给定的视图,这个视图是一个简单的python函数或类。如果没有匹配到正则表达式,或者过程中出现异常,django会调用相应的错误处理视图:handler404、handler500、handler403、handler400URLconfURLconf是一个python模块,是URL模式(简单正则表达式)到python的映射视图(函数或类)urlpatternsurlpatterns:是url()实例类型的python列表urlpatterns:第一个中的每个正则表达式它们在访问它们时被编译字符串(原始字符串)或简单的正则表达式视图:是视图函数(类)或as_view()kwargs的结果:将附加参数传递给视图名称:url名称包含语法include(module,namespace=None,app_name=None)include(pattern_list)include((pattern_list,app_namespace),namespace=None)include((pattern_list,app_namespace,instance_namwespace))模块:URLconf模块命名空间:URL命名空间app_name:应用程序的命名空间pattern_list:djang.conf.url的可迭代s.url()实例app_namespace:应用名称空间instance_namespace:实例的名称空间实例:-主urls.pyfromdjango.conf.urlsimporturl,includefromdjango.contribimportadminurlpatterns=[url(r'^dashboard/',include('dashboard.urls')),url(r'^admin/',admin.site.urls)]-dashboard.urls配置文件fromdjango.conf.urlsimporturl,includefrom。importviewsurlpatterns=[url(r'^user/',include([url(r'^list/$',view.userlist,name='user_list'),url(r'^info/$',view.userinfo,name='user_linfo'),url(r'^modify/',include([url(r'status/$',view.modifystatus,name='modify_status')]))]))]-dashboard.views视图fromdjango.shortcutsimportrenderfromdjango.httpimportHttpResponse#Createyourviewshere.defindex(request):returnHttpResponse('IndexPage')defuserList(request):returnHttpResponse("UserListPage")defuserStatus(request):returnHttpResponse("UserStatusPage")defUserInfo(request):returnHttpResponse("UserInfoPage")-请请求方式curlhttp://192.168.33.10:8080/dashboard/user/user_list/curlhttp://192.168.33.10:8080/dashboard/user/modify/status/curlhttp://192.168.33.10:8080/dashboard/user/modify/info/urlparameter要从URL中捕获值,只需在它周围放一对括号urlpatterns=[url(r'^article/2003/$',views.special_case_2003,name='special_case_2003'),url(r'^article/(2004)/$',views.articleViewInfo,name='special_case_2003'),url(r'^user/([0-9]{4})/$',views.userInfo),url(r'^date/([0-9]{4})/([0-9]{2})/([0-9]{2})$',views.dateInfo)]对应查看函数defspecial_case_2003(request):returnHttpResponse("2003")defarticleViewInfo(request,*args,**kwargs):print(args)#位置参数获取returnHttpResponse('request2004')defuserInfo(request,*args,**kwargs):返回HttpResponse(json.dumps(args))defdateInfo(request,*args,**kwargs):data={"year":args[0],"month":args[1],"day":args[2]}#returnHttpResponse(json.dumps(data))returnJsonResponse(data)关键字参数语法(?P
