视图函数
-
request 请求视图对象
def index(request): print(request.path) # 请求路径 /index/ print(request.GET) # get方法的请求数据, 字典格式.即浏览器地址栏127.0.0.1/index/?a=1&b=2 参数.<QueryDict: {'a': ['1'], 'b': ['2']}> print(request.POST) # post方法的请求数据, 字典格式 print(request.META) # 请求头,字典 print(request.get_full_path()) # 方法, 包括路径和参数 /index/?a=1&b=2 print(request.is_ajax()) # 判断是否是ajax发的请求, 此处为浏览器发的请求,并非ajax return HttpResponse('sucess')
-
response 响应
django 对于请求最后一定响应一个HttpResponse对象
- render
- HttpResponse
- redirect
-
HttpResponse("字符串"):
可以是普通字符串,也可以是浏览器能够识别的标签字符串 <h1>xxx</h1>
-
render("页面"), 语法:render(request, '页面文件', 参数(需要模板渲染的变量, 字典格式))
render(request, 'index.html', {'name': var}) name: django模板的变量, var:views视图函数中的变量名或字符串
-
读取页面文件字符串
-
页面中嵌入变量(重要), 在经过模板渲染,django模板语法:
- {{ }} -----> 变量渲染
- {% %} ----> 标签渲染
html页面中不可能写死商品名称,应从数据库中取出数据,再放入页面,所有要有变量。如
<body> <h3>商品信息</h3> <p>苹果</p> # 商品应从数据库中调用 </body>
#views.py def index(request): shangping = '苹果' return render(request, 'index.html', {'sp': shangping})
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h3>商品信息</h3> <p>{{ sp }}</p> #######变量渲染 </body> </html>
-
-
redirect() 重定向
重定向包含2次请求,第一次请求页面,服务器响应重定向请求,浏览器根据重定向信息地址请求页面,服务器响应页面
def login(request): if request.method == 'GET': return render(request, 'login.html') elif request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') if username == 'sunny' and password == '123': return redirect('/index/') # 重定向包含2次请求,浏览器第一次login页面,服务器响应location:/index/, 浏览器请求/index/, 服务器响应index.html页面 else: return HttpResponse('Wrong username or password')
重定向POST第一次请求:
第二次根据location浏览器进行get请求: