一:细说Request
每一个views.py视图函数,返回时否会携带一个request的对象,该对象包含的信息有
当然在这个基础上,还包含其他的一些信息:
request.MEAT是一个python字典,包含了本次http请求的header信息,以下几个是常用的
HTTP_RFERER:链接网页
HTTP_USER_AGENT:用户浏览的用户Agent信心
REMOTE_IP:客户端IP
获取的方法是:get("XXX")或者request.META["XXX"]
二:form中post和get的区别?
1. get是从服务器上获取数据,post是向服务器传送数据。
2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
建议:
1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
三:django中post的错误异常和解决办法
错误异常:CSRF verification failed. Request aborted.
解决办法:在含有form表单 views.py中
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def login():
.....