Django回复request请求的三种方式,以及使用到的第三方库
HttpResponse
- 返回一段byes类型的字符串。
return HttpRespense('登录成功')
HttpResponsemu模块里封装了转换类型,拼接协议版本、状态码、状态描述符...的函数,基本相当于执行了以下的代码。
conn.send(b'HTTP/1.1 200 OK\r\nContent-Type:text/html; charset=utf-8\r\n\r\n')
conn.send(send_data)
render
- 返回一个静态html页面
return render(request, 'login.html')
基本相当于执行了下面一段代码
with open('login.html', 'rb') as f:
ret = f.read()
return ret
- 返回一个动态的html页面
读取html文件,然后传入字典类型的键值对参数。替换html中的key对应的值
html文件
<p class="text-danger">{{error}}</p>
py文件
error_msg = '用户名或者密码错误'
return render(request, 'login.html', {'error':error_msg})
render模块中封装了读取html文件和替换html页面中动态数据的函数。
rediect
重定向一个http连接。
return redirect('http://www.baidu.com')
百度这个页面并不是自定义服务器返回的,而是它让浏览器去访问的,相当于转接了一下。
原理图
キャプチャ.PNG