- 一、主子路由
- 1.主路由,当主路由很多的时候,效率变慢,维护起来相当麻烦
- 2.项目文件夹中 urls.py 把主路由当作调度分发路由的工具,去分发子路由
- from django.conf.urls import url,include
- from django.contrib import admin
- from lol_hero.views import index
- urlpatterns = [
- url(r'^admin/', admin.site.urls),
- url(r'^$',index,name='index'),
- #include这个方法,会把经过主路由匹配成功后剩下的路径,分发给我们app里面的urls(新建)子路由去处理,它并不是严格匹配,正则是没有结束符$的,
- #lol_hero为app
- url(r'^lol/',include('lol_hero.urls',namespace='lol'))
- ]
- 主路由当中基本上不做url路由配置,仅仅是用来分发子路由用的。而真正的路由是在子路由当中去配置的,它们二者相互配合,
- 就会把我们整个网站的会话路由,模块化进行处理。不但结构清晰,而且维护方便。
- 二、路由传参
- 1.未命名正则表达式组传参(位置传参)
- 1.在子路由urls.py 中使用正则表达式分组
- url(r'^(\d+)/(\d+)/(\d+)/$',news_date,name="news_date")
- 2.view.py 中 视图函数 news_date
- def news_date(request,a,b,c):
- return Httpresponse(a,b,c)
- def news_date(request,a,b,c):
- 3.在html文件中
- <a href='{% url 'news:news_date' '2018' '06' '05' %}'></a> 传参
- 那么
- a='2018', b='06' c='05'
- 1.在子路由urls.py 中使用正则表达式分组
- 2.命名正则表达式组传参(关键字传参)
- url(r'^(?P<a>\d+)/(?P<b>\d+)/(?P<c>\d+)/$',news_date,name="news_date")
- 1.未命名正则表达式组传参(位置传参)
- 三、reqest 对象
- 1.
- 1)服务器接收到http协议的请求后,会根据报文创建HttpRequest对象
- 2)视图函数的第一个参数是HttpRequest对象
- 3)在django.http模块中定义了HttpRequest对象的API
- 2.属性
- 1.path:一个字符串,表示请求的页面的完整路径,不包含域名和请求参数
- 2.method:一个字符串,表示请求使用的HTTP方法,常用值包括:'GET'、'POST'
- 3.GET:一个类似于字典QueryDict的对象,包含get请求方式的所有参数
- 4.POST:一个类似于字典QueryDict的对象,包含post请求方式的所有参数
- 5.COOKIES:一个标准的Python字典,包含所有的cookie,键和值都为字符串 用于状态保持(会话都是无状态的)
- 6.session:一个既可读又可写的类似于字典的对象,表示当前的会话,用于会话状态保持
- 3.QueryDict 对象
- 1.类似python字典,只不过是一键多值
- 2.方法get()
- 1)只能获取键的一个值
- 2)如果一个键同时拥有多个值,获取最后一个值
- 3.方法getlist()
- 1) 将键的值以列表返回,可以获取一个键的多个值
- 2) 只有一个值也为列表
- 4.POST
- 1)包含post请求方式的所有参数
- 2)与form表单中的控件对应 form 标签属性method 为post
- 控件要有name属性,name 属性的值为键,value属性的值为值,构成键值对
- 5.GET
- 1)包含get请求方式的所有参数
- 2)与url请求地址中的参数对应,位于?后面
- 3)参数的格式是键值对,如key1=value1
- 4)多个参数之间,使用&连接,如key1=value1&key2=value2
- 5)get方式请求内容现实在网页上相对post不安全
- 1.
- 四、请求方式传参
- 1.get请求传参
- 1.直接在url 网址上?key1=value1&key2=value2
- 2.页面a标签 herf属性 ?key1=value1&key2=value2
- 3.在django视图函数中通过 key=request.GET.get('key','') 拿到请求的值
- 2.post请求传参
- 1.与form表单中的控件对应 form 标签属性method 为post
- 控件要有name属性,name 属性的值为键,value属性的值为值,构成键值对
- 2.表单当点击提交控件时,键值对将通过post方式传入服务器
- 3.视图函数当中通过 value = request.POST.get(‘key’,'')获取请求的值
- 1.get请求传参
django 主子路由,路由传参,请求传参
猜你喜欢
转载自blog.csdn.net/qq_41654985/article/details/80689816
今日推荐
周排行