Django——jinja2配置与使用
一、准备
1、首先创建一个新的项目django-admin startproject jinja
2、下载一下jinja的依赖:pip install jinja2
3、进入jinja文件夹,新建一个app python manage.py startapp app
二、环境创建
1、在app目录下创建一个jinja的基础环境,新建一个文件:base_jinja2.py
写入如下代码:
#coding:utf-8from jinja2 import Environment # jinja2的虚拟环境
from django.contrib.staticfiles.storage import staticfiles_storage # django的一些依赖
from django.urls import reverse # urls需要和jinja进行一些配置def environment(**options):env = Environment(**options) # 把一些配置文件添加进去env.globals.update({'static': staticfiles_storage.url,'url': reverse})return env
一个基础模板就创建好了。
然后我们需要将其配置进去,进入到settings,找到TEMPLATES,可以看到这里是Django的templates模板,现在我们需要将其换掉。
换成'BACKEND': 'django.template.backends.jinja2.Jinja2'
,
位置也改一下'DIRS': [os.path.join(BASE_DIR, 'templates')],
要在项目中也创建一下templates文件夹,顺便再建个static文件夹。
然后在TEMPLATEA的options中把虚拟环境也加上:
TEMPLATES = [{'BACKEND': 'django.template.backends.jinja2.Jinja2','DIRS': [os.path.join(BASE_DIR, 'templates')],'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',],'environment': 'app.base_jinja2.environment'},},
]
加上options中’environment’那句就可以了。
app中的base_jinja2中的environment函数。
再顺便把静态文件也配置一下STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
,不要忘记这是一个元组哦~
还有app也要注册哦!
三、效果
在templates文件夹下建一个text.html。
然后,view中定义一个简单的函数:
from django.shortcuts import render# Create your views here.def test(request):return render(request, 'text.html')
然后在根目录的urls中配置一下
from django.contrib import admin
from django.urls import path, include
from app.views import testurlpatterns = [path('admin/', admin.site.urls),path('test/', test)
]
在html中随便写一点东西,启动一下试试
启动OK的。
四、使用
views中定义个参数
def test(request):data = {'name': 'cong', 'age': 18}return render(request, 'test.html', data)
HTML中:
<label>{{name|title}}</label>
这个title是jinja中的函数,首字母大写
确实大写了。
在templates中新建一个base.html,把之前的base复制过来。
jinja里也可以用extends、block这些。和django模板用法差不多。
{% extends 'base.html' %}
{% block content %}{{name|title}},{{age}}{% endblock %}
五、区别
现在app下建一个filter文件,不过filter是Python的一个保留函数,所以使用时会出问题,还是改名成myfilter。
myfilter中定义个自定义过滤器:
def test(value, args):return value * args
然后要在base_jinja2中配置一下:
from .myfilter import testdef environment(**options):env = Environment(**options) # 把一些配置文件添加进去env.globals.update({'static': staticfiles_storage.url,'url': reverse})env.filters['test'] = testreturn env
把myfilter中的test函数导入进来,然后environment函数中加入env.filter['test'] = test
这里出现了两个小问题:1、from .myfilter import test
myfilter是在当前文件夹下的,导入时要加个 .
2、env. 后面是filters,不要少了s
接下来,注意:jinja和django模板的过滤器传参是不同的,jinja使用()传参
{{name|title}},{{age|test(5)}}
使用一下这个自定义过滤器,将age的value乘以5。
六、静态文件如何导入
在static文件夹下再定义一个test.css,再写个背景颜色吧。
* {background-color: green;
}
然后在index.html中导入css
{% extends 'base.html' %}{% block css_style %}<link rel="stylesheet" href="/static/test.css" />{% endblock %}
这样就导入好了。django中还要load static,jinja就不用了,直接写在link 的 href中就好。
就变成绿色了。
所以,jinja是不能使用load来导入的,如果load还会报错。js文件也是一样的,写响应的static下的文件就可以了。
Django——jinja2配置与使用相关推荐
- Ubuntu16.04里django的配置和安装
Ubuntu16.04里django的配置和安装 关于在Ubuntu16.04里django的配置和安装: sudo apt-get install python-pip sudo apt-get i ...
- php django mysql配置文件_Mysql学习Django+mysql配置与简单操作数据库实例代码
<Mysql学习Django+mysql配置与简单操作数据库实例代码>要点: 本文介绍了Mysql学习Django+mysql配置与简单操作数据库实例代码,希望对您有用.如果有疑问,可以联 ...
- django 日志配置
django 日志配置 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'standard': ...
- Django环境配置
Django安装 #安装最新版本的Django $ pip install django #或者指定安装版本 pip install -v django==1.7.1 项目创建 $ django-ad ...
- Python+Django数据库配置及使用——执行原始SQL并返回模型实例
开发环境 OS:Windows Server 2012 Python:2.7.5 Django:1.5.2 通过 settings.py 配置数据库 参见:Python+Django数据库配置及使用- ...
- 新手python中Django环境配置
Django环境配置 新手 python官网 Django官网 不支持的Django版本 Windows 10 搭建 Django 环境(详细教程) 已经安装过但版本不兼容(新手易踩雷问题)解决方案: ...
- 如何为 Django 服务配置负载均衡
现在的 Web 服务有一个很重要的性能指标叫 QPS,QPS 的全称是 Queries Per Second 意思是"每秒查询率",是一台服务器每秒能够相应的查询次数,是对一个特定 ...
- Django Channels配置
channels 4.0之后默认不带Daphne服务器了.解决方案可以有两种: 1.指定channels的版本为3.x: 2.安装时使用pip3 install -U channels["d ...
- Django路由配置-快速上手
Django路由配置-快速上手 Django路由系统配置代码在urls.py中,该文件在创建项目时自动生成,一般在项目目录下. 路由系统URL基本格式 在urls.py文件中配置的路由,都存放在一个名 ...
- 【django】配置Jinja2模板引擎【2】
1.安装Jinja2扩展包 pip install Jinja2 2.创建Jinja2模板引擎环境 在项⽬包⽬录-->utils⽬录中创建jinja2_env.py⽂件 from jinja2 ...
最新文章
- 第7集 构造函数中抛出的异常
- Reading Club week 3 prepare document
- python filter函数中写none_Python3基础 filter 第一个参数为NONE时 结果只返回为True的对象...
- C# DateTime ToString
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 18丨即时食物配送 I【难度简单】​
- iOS LLDB console debug总结
- reveal end of document
- docker之快速部署gogs git
- 使用rdbtools分析redis内存使用
- 【DBN】Deep Belief Network简介
- c语言外部中断服务程序设计,手把手教你学单片机的C语言程序设计十二中断服务函数.pdf...
- 实用小工具-动软代码生成器
- 积少成多Flash(4) - ActionScript 3.0 实例之Hello World, 时钟, 计时器
- 前端开发SEO搜索引擎优化方案
- 无常之美·《炉香》-扎西拉姆·多多
- 变电站无线测温系统的特点与应用
- Java打造RPC框架(二):11个类实现简单Java RPC
- 联想笔记本电脑insert键占用,当鼠标变成小方块时,如何解决
- 不带搜索框,数据同步请求,产品按字母分组组件
- linux-top命令备忘
热门文章
- 2021年常规赛NBA球员数据分析
- MATLAB中isempty函数的用法
- Mysql数据表关系与关联查询
- dev:dev fatal: HttpRequestException encountered. remote: Invalid username or password. fatal: Authen
- word给图片插入题注并在文中交叉使用
- Doc2Vec 模型参数
- html怎么导航栏中加边框,html – 使用CSS在导航栏中显示边框三角形
- 每日一记—Android动态申请多个权限
- 数理统计复习笔记九——正态性检验
- 常用三种正态检验方法