Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

There are several Django template engines

2025-01-20 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/02 Report--

这篇文章将为大家详细讲解有关Django模板引擎有几种,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

在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默认支持值为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):

{{ VARIABLE }} # 用于引入后台传入的变量{{ VARIABLE.name }}{{ VARIABLE.age }}

标签(TAG):

{% TAG %} # 用于循环1: 正序 for 循环{% for item in items %}

{{ forloop.counter }}

{{ item.name }}

{{ item.desc }}

{% endfor %}2: 倒叙 for 循环{% for item in items reversed %}

{{ forloop.counter }}

# 记录循环到第几次,计数从1开始

{{ item.name }}

{{ item.desc }}

{% endfor %}3: 变量字典{% for k,v in dictionary.items %}

{{ k }},{{ v}}

{% endfor %}5.Django模板的继承的作用

在Django开发过程中,页面中的重复部分,可以通过Django的模板继承来完成,这样使得页面开发和管理更简单;

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

{% extends 这里填写被继承的HTML页面 %}{% block 这里填写继承的block %} {% endblock %}{% include 这里填写需要引入的HTML子页面 %}6.如何实现继承模板

我们知道了模板可以用继承的方式来实现复用,那接下来我们一起来操作一下:

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

今天是星期几呀 {% block content %}

今天是星期一

{% endblock %} 好的,谢谢

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

{% extends 'base.html' %}{% block content %}

今天是星期{{ week_id }}

{% endblock %}

第三步:在根路由urls.py中,添加访问路径的路由文件,一定要分清项目的了路由和app的路由哟;

url(r'^courses/', include(('courses.urls', 'courses'), namespace='courses')),

第四步:在app的路由文件urls.py中添加要访问的html路径;

urlpatterns = [ url(r'python/(?P\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路径的时候正则表达式验证必须是数组,这个可以大家自己修改的,可以按照自己的想法来做练习哟;

关于"Django模板引擎有几种"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report