GET和POST请求:
无论GET或是POST请求,统一由视图函数处理,可通过request.method查看网络请求方式,在视图函数中可用判断语句进行分流:
if request.method=='GET':
xxx
if request.method=='POST':
xxx
else:
pass
使用GET的常见场景:
- 地址栏
- 超链接 <a href='地址‘?key=value>
- form表单中的method为get时,不常见
当GET使用查询字符串传递信息时,使用以下指令查询:
- request.GET[‘KEY’],就是URL中的key,该方法比较暴力,若key不存在则直接报错。若多个相同的key则只给出最后一个key对应的value值。
- request.GET.get(‘KEY’,‘该关键词不存在’),此方法在key不存在时会报后面提示语,不会直接网页报错。
- request.GET.getlis([‘KEY’),此方法会给出所有key对应的value值。
POST方法与GET用法一样,把上述语句中的GET换成POST即可。
POST请求必须按照post流程,因为存在csrf验证。初次调试时可以在setting.py中的MIDDLEWARE中注释该监测代码,注释csrfViewMiddleware语句。
Django的设计模式和模板层:
传统的开发模式基于MVC,模形、视图和控制。Django采用的开发模式是MTV,模型、模板和视图。弱化了控制层,控制层实际变为了urls.py文件,原来的视图层拆分成了模板层和视图层。
模板层:
模板:
- 可根据字典数据动态变化的html网页。
- 可根据视图中传递的字典数据动态生成相应的HTML网页。
模板配置:
- 创建模板文件夹,在项目中创建temolates文件夹,与manage.py同级。
- 在settings.py中进行TEMPLATES的配置。
TEMPLATES的配置:第二个一定需要配置,其他暂时不用。
- BACKEND:指定模板的引擎。
- DIRS:模板的搜索目录(一个或多个),就是templates位置。
- APP_DIRS:是否要在应用中的templates文件加载搜索模板文件,默认TRUE
- OPTIONS:有关模板的选项
配置DIRS:
'DIRS':[BASE_DIR,'templates’]
模板的加载方式:
方案一:通过loader获取模板,经HTTPresponse进行响应,在视图函数中。
from django.template import loader
# 通过loader加载模板
t=loader.get_template('模板文件名,即template文件夹中的xxx.html')
# 将t转化为HTML字符串
html=t.render()
# 用响应对象将转换的字符串内容返回给浏览器
return HttpResponse(html)
方案二:使用render()直接加载并响应模板,同样在视图函数中写代码。
from django.shortcuts import render
# 返回响应
return render(request,'模板文件名,即template文件夹中的xxx.html',字典数组)