zoukankan      html  css  js  c++  java
  • 19 01 19 视图 HttpReqeust对象 GET属性 POST属性 HttpResponse对象

    ---恢复内容开始---

    URLconf

    义,指定URL和视图函数的对应关系。

    在应用内部创建urls.py文件,指定请求地址与视图的对应关系。

    url(正则,'视图函数名称')
    

    1)如示例在booktest/urls.py中创建首页的url,代码如下

    from django.conf.urls import url
    from booktest import views
    urlpatterns=[
        url(r'^$',views.index),
    ]
    

    2)如示例在booktest/views.py中创建视图index

    from django.shortcuts import render
    from django.http import HttpResponse
    
    def index(request):
      return HttpResponse("视图函数index")
    

    说明1:正则部分推荐使用r,表示字符串不转义,这样在正则表达式中使用只写一个就可以。 说明2:不能在开始加反斜杠,推荐在结束加反斜杠。

    正确:index/
    正确:index
    错误:/index
    错误:/index/
    

    获取值

    请求的url被看做是一个普通的python字符串,进行匹配时不包括域名、get或post参数。 如请求地址如下:

    http://127.0.0.1:8000/delete1/?a=10
    

    1)去除掉域名和参数部分,并将最前面的/去除后,只剩下如下部分与正则匹配。

    delete1/
    

    2)打开booktest/urls.py文件,定义与这个地址匹配的url如下:

    url(r'^deleted+/$',views.show_arg),  


    3)在booktest/views.py中创建视图show_arg。

    def show_arg(request):
        return HttpResponse('show_arg')
    

    4)启动服务器,输入上面的网址

    方式一:位置参数

    直接使用小括号,通过位置参数传递给视图。

    1)为了提取参数,修改上面的正则表达式如下:

    url(r'^delete(d+)/$',views.show_arg),
    

    2)修改视图show_arg如下:

    注意:参数的名字是任意的如a1、b8,尽量做到见名知意。

    def show_arg(request,id):
        return HttpResponse('show arg %s'%id)

    方式二:关键字参数

    在正则表达式部分为组命名。

    1)修改正则表达式如下:

    其中?P部分表示为这个参数定义的名称为id,可以是其它名称,起名做到见名知意。

    url(r'^delete(?P<id1>d+)/$',views.show_arg),
    

    2)修改视图show_arg如下:

    注意:视图show_arg此时必须要有一个参数名为id1,否则报错。

    def show_arg(request,id1):
        return HttpResponse('show %s'%id1)


    HttpReqeust对象

    服务器接收到http协议的请求后,会根据报文创建HttpRequest对象,这个对象不需要我们创建,直接使用服务器构造好的对象就可以。视图的第一个参数必须是HttpRequest对象,在django.http模块中定义了HttpRequest对象的API。

    属性

    下面除非特别说明,属性都是只读的。

    • path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分。
    • method:一个字符串,表示请求使用的HTTP方法,常用值包括:'GET'、'POST'。
      • 在浏览器中给出地址发出请求采用get方式,如超链接。
      • 在浏览器中点击表单的提交按钮发起请求,如果表单的method设置为post则为post请求。
    • encoding:一个字符串,表示提交的数据的编码方式。
      • 如果为None则表示使用浏览器的默认设置,一般为utf-8。
      • 这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的encoding值。
    • GET:QueryDict类型对象,类似于字典,包含get请求方式的所有参数。
    • POST:QueryDict类型对象,类似于字典,包含post请求方式的所有参数。
    • FILES:一个类似于字典的对象,包含所有的上传文件。
    • COOKIES:一个标准的Python字典,包含所有的cookie,键和值都为字符串。
    • session:一个既可读又可写的类似于字典的对象,表示当前的会话,只有当Django 启用会话的支持时才可用,详细内容见"状态保持"。

    示例

    接下来演示属性path、method、encoding,对于GET、POST、FILES、COOKIES、session后面会有详细讲解。

    path、encoding

    1)打开booktest/views.py文件,代码如下:

    def index(request):
        str='%s,%s'%(request.path,request.encoding)
        return render(request, 'booktest/index.html', {'str':str})
    

    2)在templates/booktest/下创建index.html文件,代码如下:

    <html>
    <head>
        <title>首页</title>
    </head>
    <body>
    1. request对象的path,encoding属性:<br/>
    {{ str }}
    <br/>
    </body>
    </html>

    ---恢复内容结束---

  • 相关阅读:
    php集成开发环境搭建三种方式
    阿里云服务器ftp连接后21端口无法使用的问题
    Linux CentOS7 安装FTP服务器
    WIN10分盘
    转载:常见的正则表达式
    转载:什么是分布式系统中的幂等性
    会员通过消费攒积分,升级RENEW以及降级的需求
    CASSANDRA How to import and export data
    tmp for cassandra batch delete
    SQL Insert Case When Update
  • 原文地址:https://www.cnblogs.com/fromlantianwei/p/10293985.html
Copyright © 2011-2022 走看看