HTTP 协议: 请求: 请求行 其它头部 响应: 响应行 其它头部 响应体
python CGI 每一个CGI脚本都是独立的 取得HTTP请求头部: os.environ <dict> 以 HTTP_ 开头的变量 取得HTTP表单: cgi.FieldStorage() <dict> 设置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 <dict> 以 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('<html>....')
读取 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) #退出登陆
|