Django-5.请求与访问
Django-5.请求与访问

Django-5.请求与访问

一、HttpRequest对象

HttpRequest对象:

服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的第一个参数是HttpRequest对象在django.http模块中定义了HttpRequest对象的API
在这里插入图片描述

get_post\views.py

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

def index(request):
    print(request)                  #<WSGIRequest: GET '/get_post/index/'>
    print(request.path)             #/get_post/index/
    print(request.method)           #GET
    print(request.encoding)         #None
    return HttpResponse('访问成功')

在这里插入图片描述

二、GET和POST请求

1.form标签中的GET和POST

在HTML中,form表单的作用是收集标签中的内容,

...

中间可以由访问者添加类似于文本,选择,或者一些控制模块等等.然后这些内容将会被送到服务端。

一个表单必须指定两样东西:

  1. form的method参数用于设置表单的提交方式,默认使用POST.
  2. action用于设置表单的提交url,如果不写或者保持空字符串,那么将使用当前的URL.
    在这里插入图片描述

    form表单使用get方式提交的例子

    get_post.html

    
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>

<form method="get" action="{% url 'get_test' %}">{% csrf_token %}
用户名: <input type="text" placeholder="请输入用户名" name="user"><br>
密 码:<input type="text" placeholder="请输入密码" name="pwd"><br>

<input type="submit" value="提交">
</form>
</body>
</html>

ger_post\views.py
```python
from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    print(request)                  #<WSGIRequest: GET '/get_post/index/'>
    print(request.path)             #/get_post/index/
    print(request.method)           #GET
    print(request.encoding)         #None
    return render(request, 'get_post/get_post.html')

def get_test(request):
    print(request.method)
    username = request.GET.get('user')
    password = request.GET.get('pwd')
    print(username)
    print(password)
    return HttpResponse('操作完毕')

在这里插入图片描述

form表单使用post方式提交的例子

get_post.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form method="post" action="{% url 'post_test' %}">{% csrf_token %}
用户名:    <input type="text" placeholder="请输入用户名" name="user"><br>
密 码:<input type="text" placeholder="请输入密码" name="pwd"><br>

<input type="submit" value="提交">
</form>
</body>
</html>

ger_post\views.py

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

def index(request):
    print(request)                  #<WSGIRequest: GET '/get_post/index/'>
    print(request.path)             #/get_post/index/
    print(request.method)           #GET
    print(request.encoding)         #None
    return render(request, 'get_post/get_post.html')

def post_test(request):
    print(request.method)
    username = request.POST.get('user')
    password = request.POST.get('pwd')
    print(username)
    print(password)
    return HttpResponse('操作完毕')

在这里插入图片描述

一键多值的getlist方法

在这里插入图片描述

2.GET和POST对比

在这里插入图片描述
在这里插入图片描述

三、类视图

View类视图以请求方式为类方法.
在对应的方式下面编写对应的逻辑函数.
在这里插入图片描述在这里插入图片描述

四、文件上传

Django在处理文件上传的时候,文件数据被保存在了request.FILES
FILES中的每个键为中的name

设置文件的存储路径

1.在项目根目录下static中创建media文件夹
2.图片上传后,会被保存到“/static/media/文件”
3.打开settings.py文件,增加media_root项
在这里插入图片描述

文件上传form表单中

FILES只有在请求的方法为POST 且提交的

带有enctype="multipart/form-data" 的情况下才会包含数据。否则,FILES 将为一个空的类似于字典的对象
在这里插入图片描述

文件上传视图函数

在这里插入图片描述

五、HttpResponse对象

<font color=#999AAA >提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
在这里插入图片描述

六、登录状态保持

服务器中设置cookie及获取cookie

注意:设置cookie值以及删除cookie值都是response对象的操作,而获取cookie是从requeset相应中获得的.
get_post\views.py

import datetime
def set_ck(request):
    response =  HttpResponse('设置cookie')
    #response.set_cookie('name', 'moran')  # 默认关闭过期时间
    #response.set_cookie('name', 'moran', max_age=20)  # 设置20秒过期
    response.set_cookie('name', 'moran', expires=datetime.datetime(2021, 9, 2))  # 设置20秒过期

    return response

def get_ck(request):
    cookie = request.COOKIES
    ck = cookie.get('name')
    return HttpResponse('欢迎{}进入'.format(ck))

def del_ck(request):
    response = HttpResponse('删除cookie')
    response.delete_cookie('name')
    return response

发表回复

您的电子邮箱地址不会被公开。