在Django框架中,模板可以使用两种模板引擎,引擎一种是及模默认的Django模板引擎,还有一种是模板Jinja2模板引擎;
1.模版引擎的作用和优点
模版引擎作用是将View视图中需要在前端HTML页面中展示的数据,通过模板引擎的引擎语法规则,展示出来;

模版引擎优点是及模将业务逻辑的Python代码和页面设计的HTML代码分离,使代码更干净整洁更容易维护,模板使Python程序员和HTML/CSS程序员分开协作,引擎提高生产的及模效率,且将HTML代码分离出来,模板还能使其能够复用;

2.HTML模板存放的引擎位置
HTML模板存放的位置有两个,一个是及模存放在settings文件中指定的DIRS的目录列表中,还有一个是模板直接在对应的APP包下,创建templates目录,引擎将HTML放置于此即可,及模不同APP对其他APP目录下的高防服务器templates目录都是可见的;

3.模板引擎的配置
先在项目的settings.py文件中找到TEMPLATES变量,然后加入
TEMPLATES =[{ # 选择模板引擎,默认是Django的模板引擎BACKEND:django.template.backends.django.DjangoTemplates,#或者是jinja2模版 BACKEND: django.template.backends.jinja2.Jinja2# 指定HTML模板存放的目录,如果HTML模板较多,可以设置多个模板路径DIRS:[os.path.join(BASE_DIR,templates)],# APP_DIRS的值判断是否支持将template目录放置在APP中,Django默认支持值为TrueAPP_DIRS:True,OPTIONS:{ context_processors:[django.template.context_processors.debug,django.template.context_processors.request,django.contrib.auth.context_processors.auth,django.contrib.messages.context_processors.messages,],},},] 4.Django模板引擎的模板语法
变量(VARIABLE):
{ { VARIABLE }}# 用于引入后台传入的变量{ { VARIABLE.name }}{ { VARIABLE.age }} 标签(TAG):
{ % TAG %}# 用于循环1:正序for循环{ %for item in items %}<p>{ { forloop.counter }}</p><p>{ { item.name }}</p><p>{ { item.desc }}</p>{ % endfor %}2:倒叙for循环{ %for item in items reversed %}<p>{ { forloop.counter }}</p># 记录循环到第几次,计数从1开始<p>{ { item.name }}</p><p>{ { item.desc }}</p>{ % endfor %}3:变量字典{ %for k,v in dictionary.items %}<p>{ { k }},{ { v}}</p>{ % endfor %} 5.Django模板的继承的作用
在Django开发过程中,页面中的重复部分,可以通过Django的模板继承来完成,这样使得页面开发和管理更简单;
在HTML页面中使用到的关键字:
{ %extends这里填写被继承的HTML页面%}{ % block 这里填写继承的block %}{ % endblock %}{ % include 这里填写需要引入的HTML子页面%} 6.如何实现继承模板
我们知道了模板可以用继承的方式来实现复用,那接下来我们一起来操作一下:
第一步:可以在项目的templates中先编写好一个html页面,香港云服务器作为网站的基础页面被其他页面继承,我的HTML页面为base.html,然后在其中编辑HTML代码,注意要修改的部分写在{ % block %} { % endblock %}的中间;
<body><divclass="header"> 今天是星期几呀</div><!-- 内容变化部分 --> { % block content %}<divclass="content"><p>今天是星期一</p></div> { % endblock %}<divclass="footer"> 好的,谢谢</div></body> 第二步:在你想要的app的templates目录下创建一个html页面,继承之前的基础页面,我还是使用的courses app,创建一个python.html文件,这些名字都可以自己命名的,不过要注意路径之类的;
{ %extendsbase.html%}{ % block content %}<div class="content"><p>今天是星期{ { week_id }}</p></div>{ % endblock %} 第三步:在根路由urls.py中,添加访问路径的路由文件,一定要分清项目的了路由和app的路由哟;
url(r^courses/, include((courses.urls,courses),namespace=courses)), 第四步:在app的路由文件urls.py中添加要访问的html路径;
urlpatterns =[ url(rpython/(?P<week_id>\d+)$, python, name=python)] 第五步:在app下的views.py中创建一个python函数;
from django.shortcuts import renderdef python(request, week_id):return render(request,python.html,{ week_id: week_id}) 然后我们就可以运行项目,服务器租用运行项目依旧是打断点,然后调试,我们看看结果是否是我们预期的结果呢,比如我的访问路径是
http://127.0.0.1:8000/courses/python/1 python后面接数字,不然会报错,因为我们在第四步中添加路由访问的html路径的时候正则表达式验证必须是数组,这个可以大家自己修改的,可以按照自己的想法来做练习哟;