博客信息

Python Django 视图层(配置URL)

发布时间:『 2019-08-17 04:33』  博客类别:Python  阅读(770)

Django如何处理一个请求

 

当一个用户通过网页发送一个请求给Django网站,Django执行过程如下:

1. 首先访问项目下的settings.py文件中 ROOT_URLCONF = 'test1.urls'

2. 执行项目包下的urls.py文件中的urlpatterns列表

3. 执行应用包下的urls.py文件中的urlpatterns列表

4. 根据匹配的url正则调用相应的视图函数/通用视图

5. 如果没有匹配的正则,将会自动调用Django错误处理页面

 

正向解析

方式一:普通方式(一直在用)

所有映射都配到主路由中

在主路由中配置子路由

方式二:位置传参

方式三:关键字传参

方式四:关键字传参(参数名必须保持一致)

 

 

 

http://127.0.0.1:8000/trans/

# http://127.0.0.1:8000/trans/query2/26

http://127.0.0.1:8000/trans/query2/2019/08

http://127.0.0.1:8000/trans/query3/2019/08/16/

http://127.0.0.1:8000/trans/query4/2019/08/16/

 

方式四的截图


小李飞刀_Python

逆向解析

 

方式一:防止硬编码

方式二:加上命名空间进行分包管理

 

http://127.0.0.1:8000/trans/query5_1/

http://127.0.0.1:8000/trans/query6_1/


小李飞刀_Python

小李飞刀_Python


小李飞刀_Python


相关代码

主路由

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # url(r'^trans/', include('trans.urls')),
    url(r'^trans/', include('trans.urls', namespace='transNamespace', app_name='transApp')),
]


子路由

urlpatterns = [
    url(r'^$', views.query1_index),
    # url(r'^query2/(\d{2})$', views.query2_index),
    url(r'^query2/(\d{4})/(\d{2})$', views.query2_index),
    url(r'^query3/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.query3_index),
    url(r'^query4/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.query4_index, {'hello': '123'}),
    url(r'^query5_1/$', views.query5_1_index),
    url(r'^query5_2/([0-9]{4})/$', views.query5_2_index, name='hello'),
    url(r'^query6_1/$', views.query6_1_index),
    url(r'^query6_2/([0-9]{4})/$', views.query6_2_index, name='hello'),
]


views.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.http import HttpResponse
from django.shortcuts import render


# Create your views here.
def query1_index(request):
    return HttpResponse('第一种正向方式:query1_index')


# def query2_index(request,num):
#     return HttpResponse('第二种正向方式:query2_index_%s'%num)
def query2_index(request, year, mon):
    return HttpResponse('第二种正向方式:query2_index_%s年%s月' % (year, mon))


def query3_index(request, month, day, year):
    return HttpResponse('第三种正向方式:query3_index_%s年%s月%s日' % (year, month, day))


def query4_index(request, month, day, year, hello):
    return HttpResponse('第四种正向方式:query4_index_%s年%s月%s日——%s' % (year, month, day, hello))


def query5_1_index(request):
    return render(request, 'reverse.html')


def query5_2_index(request, year):
    return HttpResponse('第一种逆向解析:query5_index_%s年' % year)


def query6_1_index(request):
    return render(request, 'reverse.html')


def query6_2_index(request, year):
    return HttpResponse('第一种逆向解析:query6_index_%s年' % year)


over......


关键字:     Python       Django       视图层URL配置  

备案号:湘ICP备19000029号

Copyright © 2018-2019 javaxl晓码阁 版权所有