• 处理HTTP请求


    处理HTTP请求
    
    
    当客户端浏览器通过URL访问web应用时,首先要做的就是获取用户提交的信息,也就是从HTTP请求数据中获得的信息。HTTP请求数据分为HTTP请求头和Body
    
    HTTP请求头包含了一些HTTP请求字段和HTTP GET字段
    
    Body中可以包含任何类型的数据,包含HTTP GET字段、HTTP POST字段,下面只介绍HTTP GET字段,后面再说HTTP POST字段
    
    如果要获得某个HTTP请求字段的值,需要使用META属性,改属性与GET属性一样,也是一个字典类型,里面包含了所有HTTP请求头字典,
    
    HTTP请求头字段并不一定在任何情况下都有值,所以在获取HTTP请求头字段值时要注意这一点
    
    
    本例演示了利用路由函数的request参数获取HTTP请求头字段信息以及HTTP GET请求字段值,
    
    
    1、首先建立工程,建立工程请参照:https://www.cnblogs.com/effortsing/p/10394511.html
    
    2、在工程的Firstdjango目录中建立一个request.py脚本文件,然后在request.py文件中添加如下内容:
    
    from django.http import HttpResponse
    def myRequest(request):
        response = 'scheme' + request.scheme + '<br>'
        response += 'path:'+ request.path + '<br>'
        response += 'method:' + request.method +  '<br>'
        # 下面代码获取HTTP请求头信息
        response += 'HTTP_ACCEPT:' + request.META['HTTP_ACCEPT'] + '<br>'
        response += 'HTTP_USER_AGENT:' + request.META['HTTP_USER_AGENT'] + '<br>'
        response += 'REMOTE_ADDR:' + request.META['REMOTE_ADDR'] + '<br>'
        response += 'QUERY_STRING:' + request.META['QUERY_STRING'] + '<br>'
        #获取name字段的值
        response += 'name:' + str(request.GET['name'])+ '<br>'
        #获取age字段值
        response += 'age:' + str(request.GET.get('age'))+ '<br>'
        return HttpResponse(response)
    
    
    3、然后在Firstdjango目录中找到urls.py脚本文件,用下面的代码代替urls.py脚本里面的内容:
    
    from django.conf.urls import url
    from . import request
    urlpatterns=[
        url(r'^request$',request.myRequest),
    ]
    
    
    4、启动django工程
    
    如果已经启动了django工程,就不需要再次启动,django会自动加载修改的内容
    
    浏览器访问
    
    http://127.0.0.1:8000/request?name=Bill
    
    schemehttp
    path:/request
    method:GET
    HTTP_ACCEPT:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    HTTP_USER_AGENT:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36
    REMOTE_ADDR:127.0.0.1
    QUERY_STRING:name=Bill
    name:Bill
    age:None
    
    
    由于META属性和GET属性都是字典类型,所以如果使用中括号形式([...])获取key对应的值,当这个值不存在时,会抛出异常。可以使用try...catch语句捕捉异常,
    
    也可以使用get(...)方法获取key的值。如果key不存在,get(...)方法返回None
    
    
    5、上面建立request.py脚本文件创建位置如下图所示:

    
    
  • 相关阅读:
    在其他博客里看到的比较好的map用法,进行储存啦啦~ x
    codevs 2597 团伙x
    codevs 1009 产生数x
    格子游戏x(并查集)
    codevs 5929 亲戚x
    [HDOJ2389]Rain on your Parade(二分图最大匹配,HK算法)
    [HDOJ2819]Swap(二分图最大匹配, 匈牙利算法)
    [HDOJ1281]棋盘游戏(二分图最大匹配,匈牙利算法)
    [HDOJ1083]Courses(二分图最大匹配,匈牙利算法)
    [HDOJ2444]The Accomodation of Students(二分图染色判定,最大匹配,匈牙利算法)
  • 原文地址:https://www.cnblogs.com/effortsing/p/10395579.html
Copyright © 2020-2023  润新知