Chinaunix首页 | 论坛 | 博客
  • 博客访问: 667034
  • 博文数量: 102
  • 博客积分: 2241
  • 博客等级: 大尉
  • 技术积分: 1670
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-08 10:08
文章分类

全部博文(102)

文章存档

2013年(6)

2012年(15)

2011年(81)

分类: 系统运维

2011-09-25 20:23:43

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) |
给主人留下些什么吧!~~