首页 > 其他分享 >django模板使用的总结

django模板使用的总结

时间:2023-08-07 16:57:35浏览次数:27  
标签:总结 templates django html block 模板 页面

一、静态资源的引入方式

1.在项目根目录下创建 static文件夹。

2.settings.py 中配置环境变量,方便程序可以识别此路径。

要在 STATIC_URL = '/static/' 下边添加下面代码

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'), 
]
或
STATICFILES_DIRS = os.path.join(BASE_DIR, 'static')

3.前端引入
在页面顶部:

{% load static %} 
#引入CSS、JS,相当于拼接的字符串路径 
{% static 'xxx.css' %} 
{% static 'xxx.js' %}

二、模板(template)包含、继承与 {% block %} 的用法

使用模板前,先设置settings.py里的变量TEMPLATES的'DIRS'值,模板目录templates添加为环境变量,这样Django才能自动找到模板页面:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        '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',
            ],
        },
    },
]

 

Django模板存放方式有两种方法:

 

1、在项目根下创建templates目录,然后把模板存入在templates目录里,多个APP的话,就直接在templates目录下建立与APP名相同名称的目录即可。Django会自动查找到,这种方法简单、直观,适合个人或小项目。例:myblog\templates\blog\;myblog\templates\blog2\;myblog\templates\blog3\;

2、各个APP下单独建立一个templates目录,然后再建立一个与应用名相同的的目录,把模板放到对应的目录里。这样的方法适合大项目多人协作,每个人只负责各自的APP项目的时候。多样式多站点(域名)的情况也适用,不同的APP用不同的模板样式,不同的域名。例:myblog\blog\templates\blog;myblog\blog2\templates\blog2\;myblog\blog3\templates\blog3\;

两种方法,模板调用方法一样:

return render(request, 'app/index.html', context)

两种方法各有优点,大家选适合自己的就好,后面本教程就用第一个方法。

一般的网站所有页面的头部和尾部都一样,只有中间的部分不一样。这时我们就可以把这个页面分为三个部分,每个部分分别存放在页面head.html、index.html、footer.html中,其中,头部head.html用来放所有页面头部相同的代码、主体部分index.html放与其它页面不相同的代码、尾部head.html放与其它页面尾部相同的代码。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>MyBlog</title>
</head>
<body>
<div>头部</div>
#-----------以上部分可以保存成header.html,作为头部------------ <div>中部</div> #这一句作为中部index.html
#-----------以下部分可以保存成footer.html,作为底部------------
<div>尾部</div> </div> </body> </html>

index.html内容如下,是不是就简单的实际了头尾不变,只变中间的内容。其实如果你想拆分,可以拆成无数个块,然后再组合,只改你想改变的块就可以。这个就是块的标签{% block content %}

{% include 'head.html' %}
<div>中部</div>
{% include 'footer.html' %}

我们使用base页面作为基础页面,就保含一些固定的内容。{% block xxx%} {% endblock %} 这两个之间的就是内容会填充的地方。

templates/base.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>MyBlog</title>
</head>
<body>
<div>头部</div>

{% block content %}

{% endblock %}

{% block test%}

{% endblock %}
<div>尾部</div> </div> </body> </html>
templates/index.html
{% extends "base.html" %} 
{% block content %}
<div>中部</div>
{% endblock %}
{% block test%}
<div>test内容</div>
{% endblock %}
 

说明:

这里面的{% extends "base.html" %} 的意思是继承 base.html页面的代码,需要留意的是,使用继承方法的话,这个代码一定要放页面的第一行。

块一般以{% block xxx %}开始,你要变化的动态的内容放到中间,以 {% endblock %}结尾。其中xxx在base.hmtl随意起名,在引入的页面中使用对应的名字就会填充到对应的块位置。这里有两个块:一个content、一个test块。

标签:总结,templates,django,html,block,模板,页面
From: https://www.cnblogs.com/baihuitestsoftware/p/17611608.html

相关文章

  • Python基础day61 Django choices参数和Ajax技术简介
    choices参数的使用choices是ORM中常用字段的参数作用:类似于一些字段:性别、学历、客户来源、是否上学、是否结婚等有限较少选择的字段我们在表中存储的时候一般使用choices参数,用数字替代文字。案例classCustomer(models.Model):"""客户表"""qq=m......
  • Django博客开发教程:创建项目
    我们对需求和数据库都进行分析了之后,我们就开始来创建我们的项目。教程是在windows10操作系统下,用的Python3.6和django2.1.1,开发工具为pycharm。打开我们的Pycharm,新建一个项目。说明:1为项目保存路径,myblog为项目名。2为选择使用的虚拟环境软件,这里选virtualenv。3为虚拟环境......
  • springboot智能3D导诊系统源码,基于规则模板的开发原理
    互联网智慧3D导诊系统源码通过智能导诊,进行自助问询及挂号服务,减轻导诊台护士压力,挂号更加方便快捷。技术架构:springboot+redis+mybatisplus+mysql+RocketMQ  智慧导诊系统开发原理导诊系统从原理上大致可分为基于规则模板和基于数据模型两类。1、基于规则推理的方法通过人工建......
  • 1、Django博客开发教程:开发前的准备
    开发前的准备:1、安装好Python环境。Python3安装详细步骤2、安装好virtualenv虚拟环境。virtualenv虚拟环境安装方法3、安装好Pycharm开发工具。 ......
  • Django-4.2博客开发教程:数据库操作-页面动态展示数据库中的数据(十)
    1、数据准备工作首先增加2篇文章用于展示数据。 我用的mysql数据库,使用pycharm的DBBrowser进行数据查询。双击blog库下面对应的文章表,则显示当前数据。 2、查询数据并动态展示models.py里的类就是一个模板,在views.py引入并实例化。即将值查询出来并赋值到一个对象,在页......
  • 相机模型总结
    相机模型针孔相机模型利用相似三角形\(\frac{D_{世界}}{D_{相机}}=\frac{H}{F}\)其中:\(D_{世界}\)为世界坐标系中的距离长度,如一本书的长宽。\(D_{相机}\)为相机坐标系下的距离长度,为像的大小,或在cmos底片上的大小距离。\(H\)为物体距离相机镜头之前的距离。\(F\)为相机......
  • 软件测试-Web端测试方法总结
    一、输入框1.字符型输入框1)输入框格式校验英文全角、英文半角、数字、空或者空格、特殊字符“……!@#¥%……&*({【《,。?、:;‘<>’》】})”特别要注意单引号和&符号。禁止直接输入特殊字符时,使用“粘贴、拷贝”功能尝试输入。知识点扩展:全角/半角全角:一个字符占用两个标准字符位置半角:一个......
  • 【Vue笔记链接总结】
    【Vue笔记链接总结】【一】前端发展史【1.0】前端的发展史-Chimengmeng-博客园(cnblogs.com)【二】Vue之介绍及引入【2.0】Vue之引入-Chimengmeng-博客园(cnblogs.com)【三】Vue之基础语法【3.0】Vue之语法-Chimengmeng-博客园(cnblogs.com)【四】Vue......
  • 代码填充模板-膜拜神器
    { //Placeyoursnippetsforcpphere.Eachsnippetisdefinedunderasnippetnameandhasaprefix,bodyand //description.Theprefixiswhatisusedtotriggerthesnippetandthebodywillbeexpandedandinserted.Possiblevariablesare: //$1,......
  • 假期第八周每周总结
       本周,每天花7个多小时的时间在讲课和准备课上,每天还是比较累的,一下子讲五个小时,嗓子很疼,然后,马上就结束了,还有三四天,挣了一些钱,可以出去玩了。初二初三的孩子蛮有意思,抄答案硬说没有抄,书上抄的B,怕被发现,说选D,写着2,往下加一笔改成三,哈哈哈哈,之后还把答案涂黑改成别的,真单......