模板
前言!!django2.0的版本,如果需要对app下面添加模板的话,直接在对应的app下面直接新建文件夹templates就可以了
-
什么是模板?
- 模板,不仅仅是一个html文件
-
模板文件的使用
-
创建模板文件夹
- 随便取?
-
配置模板目录
- 修改项目里面的settings.py文件,然后找到template的那一块代码,
注意请配合BASE_DIR,使用os.path.join(BASE_DIR,'templates')来使用,来定位模板的具体目录位置
- 修改项目里面的settings.py文件,然后找到template的那一块代码,
-
相应的,在templates目录底下,需要建立想用对应的视图(控制器)的名字的文件夹
-
-
使用模板文件(请参考等下的截图文件.png)(github附源码)
- 加载模板文件
去模板目录下面获取html文件的内容,得到一个模板对象 - 定义模板上下文
向模板文件传递数据 - 模板渲染
得到一个标准的html内容
- 加载模板文件
-
(多余的步骤............................)自定义一个my_render(基于前面的django2.0前面的!)
def my_render(request,template_path,context_dict={}): context = RequestContext(request,{}) res_html = temp.render(context) return HttpResponse(res_html)
-
最终版本
def index(request): return render(request,'booktest/index.html')
-
使用模板变量
- 变量 {{ x }}
- 循环语句
{%for i in x %}
xxxx
{%endfor%}
-
自己稍微想象一下,自己是这个MTV里面的功能分布
- T模板,毫无疑问,就是负责编写html标签的常见文件,但是里面可以循环输出变量等等这些.!
- V视图,其实就是控制器,负责调用T模板和M模型数据库,问题,Model写得多吗?我记得!
就是编辑字段,还有一些增删改查,估计,还有原子操作等等这些.!还有url配置 - 所以,V可能是编写的东西比较多,就好比,刚刚的调用render应该也是V去调用的吧?看看先.
-
首先列出所有数据
-
拿数据,肯定就涉及到Model了,想想自己的记忆力,想想,首先是,一堆的派生类,
肯定就对应不同的数据库表,直接实例化某一个派生类,然后直接调用方法,
objects.all()
重要,哎,忘记了,应该说,直接采用派生类的类名就可以了,意思直接调用 派生类.objects.all() -
友情提示:
就是操作这个派生类对应的数据库表,可以直接调用这个实例化这个派生类里面的实例属性就是操作字段了,
然后就是使用save和delete就可以了. -
然后就是让V调用render的过程中顺便传递变量,传递上面获取到的所有数据.
-
然后在T上面循环输出.应该说按一定的布局去显示数据.
-
还需要,定义一个detail函数,因为需要通过id来查询信息并且返回.
- 在自己的应用里面的url里面,修改一下,修改一个正则,(^books/(\d+))
这样子,后面的参数才可以传递到>>>>>>>模板???
- 在自己的应用里面的url里面,修改一下,修改一个正则,(^books/(\d+))
-
V总是操作render去渲染模板和传递的变量.
-
网友评论