django框架模板

模板

作为Web框架,Django提供了模板,用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器。模版致力于表达外观,而不是程序逻辑。模板的设计实现了业务逻辑view与显示内容template的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用。

模板包含两部分:

  • 静态部分,包含html、css、js。

  • 动态部分,就是模板语言。

Django模板语言,简写DTL,定义在django.template包中。 创建项目后,在"项目名称/settings.py"文件中定义了关于模板的配置。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'tamplates')],
        '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',
            ],
        },
    },
]

DIRS定义一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板文件,通常是在项目的根目录下创建templates目录。

Django处理模板分为两个阶段:

  • 1.加载:根据给定的路径找到模板文件,编译后放在内存中。

  • 2.渲染:使用上下文数据对模板插值并返回生成的字符串。

为了减少开发人员重复编写加载、渲染的代码,Django提供了简写函数render,用于调用模板。

1、创建示例项目

1)创建项目demo4

2)进入项目目录demo4,创建应用app1

3)在demo4/settings.pyINSTALLED_APPS项注册应用。

4)在demo4/settings.pyDATABASES项配置使用MySQL数据库demo3,数据库在昨天已经创建。

5)在demo4/__init__.py中,导入pymysql,并且调用install_as_MySQLdb()方法

6)在demo4/settings.py中TEMPLATES项配置模板查找路径。

7)创建模板目录。

8)打开demo4/urls.py文件,包含app1url配置。

9)在app1目录下创建urls.py,配置url

from django.conf.urls import url
from .views import *
urlpatterns=[
    url(r'^$',index),
]

10)打开views.py文件,定义视图index。

from django.shortcuts import render
def index(request):
    return render(request,'app1/index.html')

11)在templates/app1目录下创建文件index.html,代码如下:

<html>
<head>
    <title>首页</title>
</head>
<body>
</body>
</html>

12)打开app1/models.py文件,定义模型类NewsInfo,结构参照第二部分设计。

from django.db import models
​
class NewsInfo(models.Model):
    news_title = models.CharField(max_length=20)
    news_content = models.TextField()
    news_date = models.DateField()
    isDelete = models.BooleanField(default=False)

13)生成迁移、执行迁移

14)设置管理界面本地化、打开demo4/settings.py文件,找到语言编码、时区的设置项,将内容改为如下:

LANGUAGE_CODE = 'zh-hans' #使用中国语言
TIME_ZONE = 'Asia/Shanghai' #使用中国上海时间

15、创建admin管理员,命令如下

python manage.py createsuperuser

16、admin.py中注册模型类,

from .models import *
admin.site.register(NewsInfo)

16、启动服务器,登录admin后台,

17、添加几条初始数据

 

2、模板语言

模板语言包括4种类型,分别是:

  • 变量

  • 标签

  • 过滤器

  • 注释

接下来逐个介绍4种类型。

2.1、模板变量

模板变量的作用是计算并输出,变量名必须由字母、数字、下划线(不能以下划线开头)和点组成。

语法如下:

{
 {变量}}

当模版引擎遇到点如dict.title,会按照下列顺序解析:

  • 1.字典dict['title']

  • 2.先属性后方法,将dict当作对象,查找属性title,如果没有再查找方法title()

  • 3.如果是格式为dict.0则解析为列表dic[0]

    如果变量不存在则插入空字符串''。

在模板中调用方法时不能传递参数。

示例

1)打开views.py文件,创建视图temp。

def temp(request):
    a = 'aaaa'
    b = {'b1':'b1111','b2':'b2222'}
    c = [1,2,3]
    news = NewsInfo()
    news.title = 'new的属性'
    return render(request,'app1/temp.html',locals())

2)打开booktest/urls.py文件,配置url。

url(r'^temp/$', views.temp),

3)修改在templates/app1下创建temp.html。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>temp</title>
</head>
<body>
<h2>
a变量:{
 {a}}<br>
字典属性值b.b1:{
 {b.b1}},<br>
列表对象的下标c.0的值:{
 {c.0}}<br>
对象news的tltle属性:{
 {news.title}}<br>
</h2>
</body>
</html>
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值