HTTP 协议:
请求: 请求行 其它头部
响应: 响应行 其它头部 响应体
python CGI
每一个CGI脚本都是独立的
取得HTTP请求头部: os.environ 以 HTTP_ 开头的变量
取得HTTP表单: cgi.FieldStorage()
设置HTTP响应头部: 脚本输出 格式 K: V\r\n... \r\n
设置HTTP响应体: 脚本输出
cookie 的存取设置与其它头部相同
os.environ['HTTP_COOKIE']
import Cookie
ck = Cookie.SimpleCookie()
ck['key1'] = 'value1'
print ck.putput()
session 无, 根据 cookie 脚本中处理
PHP
取得HTTP请求头部:
取得HTTP表单: $_GET $_POST $_REQUEST
设置HTTP响应头部:
HTTP响应体
取得、设置 cookie: $_COOKIES?
取得、设置 session
页面头部 start_session() 访问 $_SESSION
Python Django
Django 每个请求对应一个Handler 函数,
输入参数有一个 HttpRequest 对象, 返回一个 HttpResponse 实例, django 会把它转换成合适的 HTTP response
取得HTTP请求行: request.method ('GET','POST', ..) request.path (/test)
取得HTTP请求头部: request.META 以 HTTP_ 开头的变量
取得HTTP表单: request.GET request.POST request.REQUEST request.FILES
创建 HttpResponse 及设置类型: 在 HttpResponse 构造参数指定mimetype
from django.http import HttpResponse
response = HttpResponse(content='', mimetype=None, status=None, content_type=None)
设置HTTP响应头部: 把 HttpResponse 对象当成字典使用, 增加值即可, items()方法可以查看
response['abc'] = '1234'
HTTP响应体: 使用 HttpResponse 对象 write 方法
response.write('....')
读取 cookie: 每个 request 有 COOKIES 对象, 字典类型
if 'abc' in request.COOKIES: print request.COOKIES['abc']
写入 cookie: 使用 HttpResponse 对象的 set_cookie 方法
response.set_cookie('KEY', 'Value')
取得、设置 session:
启用 SessionMiddleware, 安装 sessions 应用, syncdb 表,
之后每个 request 有一个 session, 字典类型
查看 session 详细信息:
from django.contrib.sessions.models import Session
for sess1 in Session.objects.all():
print sess1.session_key, sess1.session_data, sess1.expire_date, sess1.get_decoded()
用户认证、登陆:
需要 session 功能, 启用 AuthenticationMiddleware, 安装 auth 应用, syncdb 表,
之后每个 request 有一个 user 对象
from django.contrib import auth
request.user.is_authenticated() # 判断是否登陆
user = auth.authenticate(username='XX',password='YY') #返回None或User
auth.login(request, user) #登陆
auth.logout(request) #退出登陆
阅读(3169) | 评论(0) | 转发(0) |