IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django内置函数详解Httprequest详解(模拟搜索/模拟用户登陆/模拟上传文件功能) -> 正文阅读

[Python知识库]Django内置函数详解Httprequest详解(模拟搜索/模拟用户登陆/模拟上传文件功能)

1.0 Djiango内置函数说明

函数名称
httpHttoResponseHttoResponse对象
httpStreamingHttpResponse响应可迭代对象
httpFileResponse下载文件
httpjsonResponse返回json
shortcutsrender响应HttoResponse对象,一个快捷函数
viewsgeneric view类视图继承的类
viewsdecorators csrf取消某视图csrf防护
contribadmin内建管理后台
contribauthlogin 登陆
contribauthlogout 退出
contribauthauthenticate 用户信息认证
contribauthdecorators login_required 登陆认证装饰器
contribauthmodels user 获取登陆用户信息
contribauthmodels Baseusermanager,abstractbaseuser 获取登陆用户信息
confsettings导入配置文件
dbconnection连接数据库

2.0 HTTP请求流程

在这里插入图片描述
HttoResponse含义
·djiango会建立一个包含请求源数据的Httprequest对象,当djiango加载对应视图Httprequest对象将作为函数的第一个参数request,每个视图返回一个HttoResponse对象·
在这里插入图片描述

Httprequest对象:常用的方法

方法描述
request.get_host()服务器主机地址和端口
request.get_port()服务器端口
request.get_full_path()请求页面完整路径和查询参数
request.get_raw_uri请求页面url所有信息,包含主机名,路径参数
测试
在这里插入图片描述

HttpRequest对象:接收URL参数

在这里插入图片描述
打印第一个参数和第二个参数

print(request.GET["a"])
print(request.GET["b"])

HttpRequest对象:请求事例

1.表单GET提交,例如搜索页面

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

2.表单POST提交,例如登陆页面

实现如图所示的功能
在这里插入图片描述

2.1 配置路由

 re_path('^login/',views.login,name='login')

在这里插入图片描述
2.2 配置视图
在这里插入图片描述

def login(request):
    if request.method == 'GET':
        return render(request,'login.html')

2.3 配置登陆页面login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登陆</title>
</head>
<body>
<h1>欢迎访问devops系统</h1>
<form action="">
    用户名 :<input type="text" name="username"><br>
    密码   :  <input type="text" name="password"><br>
    <button type="submit">登陆</button>
</form>

</body>
</html>

在这里插入图片描述
请求测试

http://127.0.0.1:8000/login/

2.4 实现密码登陆的逻辑

GET  明文,不适合传输敏感数据,例如文章id,数据表格id,搜索功能
POST 在http请求正文里,例如用户密码,上传文件

2.4.1 导入跳转模块redirect,修改视图,模拟密码登陆的请求场景并返回相应的结果

def login(request):
    if request.method == 'GET':
        return render(request,'login.html')
    elif request.method == 'POST':
        print(request.POST)
        username = request.POST.get('username')
        password = request.POST.get('password')
        #查询数据库用户名和密码是否正确,当正确时跳转首页
        if username == 'zhangfan' and password == '123456':
            #跳转首页
            return  redirect('/')
        else:
            msg = '用户名或者密码错误!'
            #当密码错误时返回错误信息到前端首页
        return render(request, 'login.html',{'msg':msg})

2.4.2 修改前端html页面

<span style="color: red;">{{ msg }}</span>

在这里插入图片描述
最终实现密码正确能跳转到首页 ,密码错误前端返回错误信息
在这里插入图片描述
在这里插入图片描述

3 实现上传图片,例如修改头像等

3.1 创建一个上传的路由
在这里插入图片描述

   re_path('^user_upload/$', views.user_upload,name='user_upload')

3.2 编写视图 写一个上传user_upload的函数

def user_upload(request):
    if request.method == "GET":
        return render(request, 'upload.html')
    elif request.method == "POST":
        print(request.FILES)
        obj = request.FILES.get('touxiang') #获取上传过来的头像
        print(type(obj),obj.name)
        import os
        file_path = os.path.join('upload',obj.name)  #定义上传文件的路径
        with open(file_path,'wb') as f:
            for i in obj.chunks(): #循环接收二进制文件块
                f.write(i)   #写入到本地
        msg = "上传成功!"
        return render(request, 'upload.html',{'msg':msg})

同级创建一个upload的文件目录
在这里插入图片描述

3.3 编写upload.html模版

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>上传文件</title>
</head>
<body>
<form action="{% url 'user_upload' %}" method="post", enctype="multipart/form-data">
    <input type="file", name="touxiang">
    <button type="submit">提交</button>
    <br>
    <span style="color: red;">{{ msg }}</span>
</form>

</body>
</html>

3.4 上传一个图片测试测试
在这里插入图片描述
在这里插入图片描述
在本地upload目录下会显示刚才上传的图片,说明上传功能实现
request.GET应用场景:
1.获取客户端信息,请求页面的情况
2.接收客户端上传的数据和文件
3.根据客户端特定信息作相应处理,例如根据请求方法

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:11:19  更:2022-10-22 21:14:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 14:30:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码