Django之view视图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
from django.shortcuts import render,redirect

# Create your views here.
# 首先导入HttpResponse模块
from django.shortcuts import HttpResponse

import datetime

# request属性
# request.GET
# 获取类似于字典的对象QueryDict ,包含http get所有参数
# 比如?id=3&sid=4
# <QueryDict: {'id': ['3'], 'sid': ['4']}>
# 可通过request.GET.get('id')获取id的值

# request.POST
# 获取类似于字典的对象QueryDict ,包含http post所有参数
# <QueryDict: {'user': ['ropon'], 'pwd': ['123']}>
# 可通过request.POST.get('user')获取user的值
# POST请求可以为空 即表单中没有任何数据 QueryDict字典也会创建
# 要判断是否post请求 要使用if request.method == 'POST'
# 如果通过POST上传文件 文件信息将包含在FILES属性(request.FILES)
# 键值对的值是多个时 比如CheckBox类型input标签 select标签

# request.body
# 一个字符串 表示请求报文的主体
# b'user=1&pwd=2&shuiguo=pingguo&slist=se3'

# request.path
# request.get_full_path()
# 一个字符串 表示请求路径
# 比如url地址是 http://127.0.0.1:8000/app01/ request.path值是/app01/

# request.method
# 一个字符串 表示请求使用HTTP方法 比如GET POST

# request.encoding
# 一个字符串 提交数据的编码方式 如果值为None 表示使用DEFAULT_CHARSET 设置 默认'utf-8'

# 这个属性是可写的 可修改它来修改访问表单数据使用的编码
# 修改后对属性的任何访问(比如从GET或POST中读取数据)将使用新的 encoding值
# 一般在知道变表单数据的编码不是DEFAULT_CHARSET 才修改它

# request.META
# 一个标准字典 包含所有HTTP首部
# CONTENT_LENGTH 请求正文的长度 是一个字符串
# CONTENT_TYPE 请求正文的MIME类型
# HTTP_ACCEPT 响应可接收的Content-Type
# HTTP_ACCEPT_ENCODING 响应可接收的编码
# HTTP_ACCEPT_LANGUAGE 响应可接收的语言
# HTTP_HOST 客户端发送的HTTP Host头部
# HTTP_REFERER referer页面
# HTTP_USER_AGENT 客户端UA信息
# QUERY_STRING 比如请求地址http://127.0.0.1:8000/app01/?id=2&sid=4 那个此值为id=2&sid=4
# REMOTE_ADDR 客户端的IP地址
# REMOTE_HOST 客户端的主机名
# SERVER_PORT 服务器端口 是一个字符串

# request.FILES
# 取类似于字典的对象MultiValueDict ,包含所有上传文件的信息
# 可通过request.FILES.get('f1') 获取上传文件的文件名

# request.COOKIES
# 一个标准字典 包含所有cookie 是键值对 且都是字符串

# request.session
# 一个可读可写的类似于字典的对象 表示当前会话 而且启用会话支持才可用

# request.user 用户认证组件下才可用

# request.is_ajax()
# 是否ajax请求


def index(request):
# if request.method == 'GET':
# # now = datetime.datetime.now()
# # html = '现在时间是: '+str(now)
# # html = "<html><body>It is now %s.</body></html>" % now
#
# # print(request.GET.get('id'))
#
# # return HttpResponse(html)
# msg =''
# else:
#
# # print(request.POST)
# print(request.POST.getlist('shuiguo'))
# print(request.POST.getlist('slist'))
#
#
# user = request.POST.get('user')
# pwd = request.POST.get('pwd')
# if user == 'ropon' and pwd == '123':
# msg = 'success'
# else:
# msg = 'fail'
msg = 'ok'
# print(request.META.get('SERVER_PORT'))
# print(request.FILES.get('f1'))
# print(request.user)
print(request.is_ajax())

return render(request, 'app01/index.html', {'msg': msg})


# HttpResponse() 传入一个字符串作为响应体
# render(request, template_name[, context])
# 结合一个给定的模板和一个给定的上下文字典 返回一个渲染后HttpResponse 对象
# request 用于生成显影的请求对象
# template_name 要使用的模板完整名称
# context 添加到模板上下文的一个字典 默认是一个空字典
# 总结 render方法就是将一个模板页面中模板语法进行渲染 最终渲染成一个html页面作为响应体

# redirect()
# 传递要重定向的一个硬编码URL