Django 模板引擎以及模板

在Django框架中,可使用两种模板引擎,一种是默认的Django模板引擎,还有一种是Jinja2模板引擎html

1.模版引擎的做用和优势

模版引擎做用是将View视图中须要在前端HTML页面中展现的数据,经过模板引擎的语法规则,展现出来;前端

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

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默认支持值为True
        'APP_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):django

{{ 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的模板继承来完成,这样使得页面开发和管理更简单;app

在HTML页面中使用到的关键字:框架

{% extends 这里填写被继承的HTML页面 %}

{% block 这里填写继承的block %}  {% endblock %}

{% include 这里填写须要引入的HTML子页面 %}

6.如何实现继承模板

咱们知道了模板能够用继承的方式来实现复用,那接下来咱们一块儿来操做一下:函数

第一步:能够在项目的templates中先编写好一个html页面,做为网站的基础页面被其余页面继承,个人HTML页面为base.html,而后在其中编辑HTML代码,注意要修改的部分写在{% block %} {% endblock %}的中间;

<body>
    <div class="header">
        今天是星期几呀
    </div>
    
    <!-- 内容变化部分 -->
    {% block content %}
    <div class="content">
        <p>今天是星期一</p>
    </div>
    {% endblock %}
    
    <div class="footer">
        好的,谢谢
    </div>
</body>

第二步:在你想要的app的templates目录下建立一个html页面,继承以前的基础页面,我仍是使用的courses app,建立一个python.html文件,这些名字均可以本身命名的,不过要注意路径之类的;

{% extends 'base.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(r'python/(?P<week_id>\d+)$', python, name='python')
]

第五步:在app下的views.py中建立一个python函数;

from django.shortcuts import render

def python(request, week_id):
    return render(request, 'python.html', {'week_id': week_id})

而后咱们就能够运行项目,运行项目依旧是打断点,而后调试,咱们看看结果是不是咱们预期的结果呢,好比个人访问路径是

http://127.0.0.1:8000/courses/python/1

python后面接数字,否则会报错,由于咱们在第四步中添加路由访问的html路径的时候正则表达式验证必须是数组,这个能够你们本身修改的,能够按照本身的想法来作练习哟;

相关文章
相关标签/搜索