码迷,mamicode.com
首页 > 其他好文 > 详细

Django之路由系统

时间:2018-12-12 00:41:24      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:例子   ESS   失败   http   class   输入   详细   post   pre   

路由控制之简单配置

我们基本的路由代码如下:(以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之路由系统

标签:例子   ESS   失败   http   class   输入   详细   post   pre   

原文地址:https://www.cnblogs.com/swearBM/p/10105589.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!