博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用jinja2替换Django的模板
阅读量:5880 次
发布时间:2019-06-19

本文共 1636 字,大约阅读时间需要 5 分钟。

整个项目的文件结构如下:

 ~/hg_repo/Django/Django$ tree

.
├── index.py
├── __init__.py
├── jobs
│   ├── __init__.py
│   ├── models.py
│   ├── templates
│   │   ├── __init__.py
│   │   ├── job_base.html
│   │   └── job_list.html
│   ├── tests.py
│   ├── urls.py
│   ├── views.py
├── settings.py
├── templates
│   ├── base.html
│   └── index.html
├── urls.py
└── wsgi.py

 jobs是一个application,index.py是首页入口,项目下的templates目录放全局template,包括首页index.html及公共模板base.html。

 

首先,Django的模板查找顺序在项目的settings.py定义:

 TEMPLATE_LOADERS = ( 

    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
#     'django.template.loaders.eggs.Loader',
)

以上设置表明先从文件目录找,如果找不到就从每个application下的templates文件夹下找。

而文件目录又是如下定义:

 
TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    '/home/andrew/hg_repo/Django/Django/templates',
)

jobs中使用jinja2的模板,views.py代码如下:

from django.http import HttpResponse
from django.conf import settings
from jinja2 import Environment, PackageLoader, FileSystemLoader, ChoiceLoader
from Django.jobs.models import Job
def job_list(request):    
    loader = ChoiceLoader([
        FileSystemLoader(settings.TEMPLATE_DIRS),
        PackageLoader('Django.jobs', 'templates')
    ])
    env = Environment(loader=loader)
    template = env.get_template('job_list.html')
    object_list = Job.objects.all()
    return HttpResponse(
        template.render(object_list=object_list)
    )

 ChoiceLoader根据顺序找模板,原理和Django的TEMPLATE_LOADERS类似,加FileSystemLoader(settings.TEMPLATE_DIRS)的目的是为了找到项目的templates

 

 

转载于:https://www.cnblogs.com/children/archive/2013/04/16/3023733.html

你可能感兴趣的文章
老男孩最近几年常用的免费的开源软件
查看>>
Cacti 中的 Debugging 技巧
查看>>
我的友情链接
查看>>
利用pt-table-checksum做主从一致性校验
查看>>
部署企业版lync2013之四:持久聊天
查看>>
分布式事务的实现方式
查看>>
MongoDB基本操作、备份还原及用户管理
查看>>
mysql八:ORM框架SQLAlchemy
查看>>
Lamp、MySQL架构介绍及MySQL的安装
查看>>
Spring容器、高级装配回顾
查看>>
linux 下mii-tool ethtool 命令简单的使用
查看>>
窗体包含窗体--MDI多文档界面
查看>>
flink yarn 部署指南
查看>>
iPhone安全气囊?苹果新专利暗示未来iPhone不怕摔
查看>>
Bash脚本练习(一)
查看>>
Linux篇:学习Linux云计算的想法和感悟
查看>>
Grep学习笔记
查看>>
2018年最受信息安全专业人士欢迎的20款***工具
查看>>
WIN7--L2T虚拟教程
查看>>
只限输入数字,小数点,保留小数点后2位
查看>>