Django之路由系统
Posted swearbm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django之路由系统相关的知识,希望对你有一定的参考价值。
路由控制之简单配置
我们基本的路由代码如下:(以re_path为例,其是Django1.0的路由)
urlpatterns = [ re_path(r‘^articles/2003/$‘, views.special_case_2003), re_path(r‘^articles/([0-9]{4})/$‘, views.year_archive), #例子 re_path(r‘^articles/([0-9]{4})/([0-9]{2})/$‘, views.month_archive), re_path(r‘^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$‘, views.article_detail), ]
拿例子那一行代码来说,我们根据这个URL我们的视图函数的参数就应该是两个,一个是request和一个默认参数,具体代码如下:
def year_archive(request,year): return HttpResponse(year)
以每一个//分割的内容在函数种就是一个参数,具体的判断正则等由自己决定。
有名分组
有名分组是将我们的之前的位置参数变成关键字参数,这样我们的视图函数种的函数不用使用位置参数,而且参数也易懂,便于操作。
一般格式为:?P<自定义的变量名>
示例:
re_path(r‘^articles/(?P<y>[0-9]{4})/(?P<m>[0-9]{2})/(?P<d>[0-9]+)/$‘, views.article_detail),
路由分发
有了路由分发,我们输入url的时候对我们在urls里的代码就会降低因为匹配到前面的代码而没有匹配到我们需要的url的问题了,详细代码如下:
At any point, your urlpatterns can “include” other URLconf modules. This essentially “roots” a set of URLs below other ones. ‘‘‘ from django.urls import path,re_path,include from app01 import views urlpatterns = [ re_path(r‘^admin/‘, admin.site.urls), re_path(r‘^blog/‘, include(‘blog.urls‘)), ]
url的请求
我们一开始输入url的时候向后台提交的是一个GET请求,而提交表单默认是POST请求,所以在如下视图函数的情况下:
def login(request): if request.method == ‘GET‘: print(‘我是第一次‘, request.method) return render(request,‘login.html‘) else: print(‘我是第二次‘,request.method) print(request.POST) if request.POST.get(‘user‘) == ‘Marvelous‘ and request.POST.get(‘pwd‘) == ‘123‘: return HttpResponse(‘登陆成功!‘) else: return HttpResponse(‘登陆失败!‘)
我们的结果是:
是执行了两次函数,所以会有上述的结果。
以上是关于Django之路由系统的主要内容,如果未能解决你的问题,请参考以下文章