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之路由系统的主要内容,如果未能解决你的问题,请参考以下文章

Django之路由系统

Django之路由系统

Django之路由系统

Django之 路由系统

Django之路由系统

Django之路由系统