django1.10的render()函数的规范用法

django的render()函数常用的3个参数为,render(request,template_name,context=None),特别要注意后2个参数的规范格式:

用法规范

template_name需要用‘’单引号包围起来,并且这里的路径为setting.py里面的TEMPLATES选项里的DIR字段所规定,BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))默认为项目的总目录(即setting.py的上上层目录),'DIRS': [os.path.join(BASE_DIR, 'templates')]即指templates与manage.py同一级。render()里面的template_name将紧跟’DIRS’路径。

context默认为None,指定时需用字典格式,并且字典的键要用单引号引用。如果为了省事,也可以直接调用locals(),可以直接将函数中所有的变量全部传给模板。

常见错误

1TemplateDoesNotExist

解决办法:对照debug页面标黑的local()变量查看系统输出的模板路径设置。注意上面所说的BASE_DIR、DIRS选项设置。
我的工程目录结构为:
!()[django1-10的render-函数的规范用法/捕获.JPG]
DIR设置为:
'DIRS': [os.path.join(BASE_DIR, 'templates')],

2dictionary update sequence element #0 has length 1; 2 is required

解决办法:修改context字段的格式,例如

1
2
3
def polls(request,typee):
return render(request,'base.html',{'typee':typee})
#务必注意字典的键需用加引号