梦想家博客

程序员知识

django 主子路由,路由传参,请求传参

  • 一、主子路由
    • 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)
      • 3.在html文件中
        • <a href='{% url 'news:news_date' '2018' '06' '05' %}'></a>   传参
      • 那么
      • a='2018', b='06'  c='05'
    • 2.命名正则表达式组传参(关键字传参)
      • url(r'^(?P<a>\d+)/(?P<b>\d+)/(?P<c>\d+)/$',news_date,name="news_date")
  • 三、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.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’,'')获取请求的值
阅读更多
个人分类: django
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭