您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

python的Django的DTL模板示例讲解

时间:2020-05-07 10:45:43  来源:  作者:

一、DTL讲解:

1、DTL模板是一种带有特殊语法的html文件,这个HTML文件可以被Django编译,可以传递参数进去,实现数据动态化。在编译完成后,生成一个普通的HTML文件,然后发送给客户端。

2、在Django里通常在views.py文件中会定义视图函数,同时需要导入对应的库,导入库的命令通常是from django.shortcuts import render

from django.http import HttpResponse

其中上面一个render,中文名就是渲染的意思,也就是在views.py文件里定义的方法,会通过return render(request,'index.html',context=context)这样的方式将index.html文件进行渲染。index.html里会调用视图文件views.py里定义的变量,定义的方法和定义的属性。

 

二、示例讲解:

下面代码是对DTL的for,with等的讲解。

1、首先要创建项目和创建App,进入文件目录“E:ITPythonPYTHON试验”里,在地址栏输入cmd,进入cmd命令提示符环境下依次输入以下命令:

django-admin startproject demo08

cd demo08

python manage.py startapp books

 

相当于创建了一个demo08项目,在项目下创建了一个books的app,代码图示例如下:

 

python的Django的DTL模板示例讲解

 

2、进入pycharm,打开E:ITPYthonPYTHONdemo08这个文件夹。

①先设置项目目录下E:ITPYthonPYTHON试验demo08demo08settings.py的代码,代码设置如下:

"""
Django settings for demo08 project.

Generated by 'django-admin startproject' using Django 2.2.1.

For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '@f%my2rhwsou3p9%8xr1^r)#7j1d=c)!6(%8yk$7rehy-rh%=^'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'books',                             #需将app名称存入
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'demo08.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],                  #设置静态文件存放目录
        'APP_DIRS': True,                        #为True代表在设置的上面一行DIRS里如果找不到静态文件的话,会自动去app目录下寻找静态文件
        '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',
            ],
        },
    },
]

WSGI_APPLICATION = 'demo08.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/

LANGUAGE_CODE = 'zh-Hans'    #设置中文语言

TIME_ZONE = 'Asia/Shanghai'   #设置上海时区

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (css, JAVAScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/

STATIC_URL = '/static/'

真正需要设置的只有4行,分别是

①在INSTALLED_APPS里添加app文件名,即'books',

②在TEMPLATES里设置DIRS的值,设置为[os.path.join(BASE_DIR,'templates')],这项时用来设置静态文件存放目录

③LANGUAGE_CODE = 'zh-Hans' #设置中文语言

④TIME_ZONE = 'Asia/Shanghai' #设置上海时区

 

3、在app目录创建E:ITPYthonPYTHON试验demo08books\urls.py文件,即创建app下面的路由文件,在路由文件里的代码如下:

from django.urls import path
from . import views
urlpatterns=[
    path('',views.index),
    path('book0/',views.book0,name='book0'),
    path('book1/',views.book1,name='book1'),
    path('book2/',views.book2,name='book2'),
    path('book3/',views.book3,name='book3'),
    path('book4/',views.book4,name='book4'),
]

4、在app目录E:ITPYthonPYTHON试验demo08booksviews.py下编辑视图文件,即编辑views.py文件,代码如下:

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

def index(request):
    context={"books":[
        "python编程从入门到实战",
        "python面向对象编程指南",
        "python网络爬虫权威指南",
        "python机器学习经典实例",
        "零起点TensorFlow快速入门",
        ],
        "books2":[
            "西游记",
            "水浒传",
            "红楼梦",
            "三国演义"
        ],
        "persons":
            {
            "嬴政":"秦朝的开国皇帝",
            "刘秀":"位面之子,东汉开国皇帝,秀才造反,不鸣则已一鸣惊人",
            "李世民":"唐朝杰出的皇帝,人称天可汗",
            "毛泽东": "新中国国家主席",
            },
        "movies":[
            {
                "name":"泰囧",
                "box_office":"12.77亿",
                "Director":"徐峥"
            },
            {
                "name": "攀登者",
                "box_Office": "22.47亿",
                "Director": "吴京"
            },
            {
                "name": "中国机长",
                "box_Office": "20.56亿",
                "Director": "刘伟强"
            }],
        "comments":["电影真好","很有励志意义"],
        "goods":["apple","banana","orange"],
        "students":["张三","李思","王五"]
    }
    return render(request,"index.html",context=context)

def book0(request):
    return HttpResponse("从入门到实践是一本针对所有层次的Python读者而作的Python入门书。")

def book1(request):
    return HttpResponse("Python面向对象编程指南.[美]Steven F.Lott(带详细书签),分成两个压缩包。本书由树莓派基金会资深软件开发工程师亲笔撰写,是学习在树莓派上编程的必备手册。即使你没有任何编程经验,也可以畅游树莓派的世界。本书覆盖了初学编程者和第一次做Python开发所需的基础知识,书中首先对Python编程做了基本介绍,并给出了通用的Python代码,然后逐步介绍了。")

def book2(request):
    return HttpResponse("本书采用简洁强大的Python语言,全面介绍网页抓取技术,解答诸多常见问题,是掌握从数据爬取到数据清洗全流程的系统实践指南")


def book3(request):
    return HttpResponse("Python机器学习经典实例首先通过实用的案例介绍机器学习的基础知识,然后介绍一些稍微复杂的机器学习算法,例如支持向量机、极端随机森林、隐马尔可夫模型、条件随机场、深度神经网络,等等")

def book4(request):
    return HttpResponse("TensorFlow是近年来影响最大的神经网络和深度学习平台,《零起点TensorFlow快速入门》以生动活泼的语言,从入门者的角度,对TensorFlow进行介绍,书中包含大量简单风趣的实际案例,如孤独的神经元、梵高画风等,让广大初学者快速掌握神经网络的基本编程,为进一步学习人工智能奠定扎实的基础。")

5、编辑项目路由下的url文件,文件路径是E:ITPYthonPYTHON试验demo08demo08\urls.py,编写代码如下:

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('books/',include('books.urls')),
]

6、在静态文件目录下创建静态HTML文件,静态HTML文件目录是E:ITPYthonPYTHON试验demo08templatesindex.html,在其中编辑代码,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>书籍</title>
    <embed src="https://www.kugou.com/song/#hash=04E4C1D0AFB9DEEF3B0834AA1F71B654&album_id=26382011" width:100% margin-left:auto>
    <style>
        .nav1{
        overflow:hidden;
        }
        .nav1 li{
        float:left;
        list-style:none;
        margin:0 20px;
        }
        .nav2 li{
        float:left;
        list-style:none;
        margin:0 20px;
        }

    </style>
</head>
<body style="background:skyblue;text-align:left;width:90%;margin-left:auto;margin-right:auto;">
<div id="book" style="width:100%;heigth:40%;border:1px solid blue;margin-left:auto;">
    <h4><strong>  python书籍</strong></h4>
    <以下是通过for book in books遍历方式获取的书籍数据>
<ul class="nav1">
    {%for book in books%}
    <li>{{book}}</li>
    {%endfor%}
</ul>
    <以下是通过books.0这样的方式获取的书籍数据>
<ul class="nav2">
    <li><a href="{%url 'book0'%}">{{books.0}}</a></li>
    <li><a href="{%url 'book1'%}">{{books.1}}</a>></li>
    <li><a href="{%url 'book2'%}">{{books.2}}</a>></li>
    <li><a href="{%url 'book3'%}">{{books.3}}</a></li>
    <li><a href="{% url 'book4'%}">{{books.4}}</a></li>
</ul>
        <br>
<h4>  四大名著</h4>
<ul>
    {% for book2 in books2 %}
    <li>{{ book2 }}</li>
    {% endfor %}
</ul>
</div>
<div id="human" style="width:100%;heigth:30%;border:1px solid blue">
    <h4>  中国名人</h4>
    <ul>
        {% for person,personvalue in persons.items %}
        <li>{{person}} : {{personvalue}}</li>
        {% endfor %}
    </ul>
</div>
<div id="movies" style="width:100%;heigth:100%;border:1px solid blue">
    <h4>  电影</h4>
    <table>
        <thead>
        <tr>
            <th>序号</th>
            <th>电影名称</th>
            <th>票房</th>
            <th>导演</th>
        </tr>
        </thead>

        <tbody>
       <tr>

           {% for movie in movies %}
           {% if forloop.first %}
           <tr style="background:red">
           {% elif forloop.last%}
           <tr style="background:green">
           {%else%}
           <tr>
           {%endif%}
           <td>{{forloop.counter}}</td>
           <td>{{ movie.name }}</td>
           <td> {{ movie.box_Office }}</td>
           <td>{{ movie.Director }}</td>

           {% endfor %}
       </tr>
        </tbody>

    </table>

</div>
<div id="others" style="border:1px solid blue">
<h4>  评论信息</h4>
<ul>
    {% for comment in comments%}
    <li>{{comment}}</li>
    {%empty%}
    <li>没有任何评论</li>
    {%endfor%}
</ul>
<h4>  水果商品</h4>
    {% with gd=goods.0%}
    <p>    {{gd}}</p>
    {%endwith%}

    <h4>  学生姓名</h4>
    {% with students.0 as st1%}
    <p>    {{st1}}</p>
    {%endwith%}
</div>
</body>
</html>

7、在pycharm下方的Terminal终端中输入命令:

python manage.py runserver

如下图所示:

 

python的Django的DTL模板示例讲解

 

8、代码运行结果如下面的HTML页面所示:

 

python的Django的DTL模板示例讲解

 



Tags:python Django   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、DTL讲解:1、DTL模板是一种带有特殊语法的HTML文件,这个HTML文件可以被Django编译,可以传递参数进去,实现数据动态化。在编译完成后,生成一个普通的HTML文件,然后发送给客户端...【详细内容】
2020-05-07  Tags: python Django  点击:(43)  评论:(0)  加入收藏
1创建web服务器:使用cmd命令进入到存放项目的目录中执行以下命令:python django-admin.py startproject mysite成功后会在目录中出现 mysite 目录,此处创建的为开发服务器2创...【详细内容】
2019-11-12  Tags: python Django  点击:(70)  评论:(0)  加入收藏
▌简易百科推荐
大家好,我是菜鸟哥,今天跟大家一起聊一下Python4的话题! 从2020年的1月1号开始,Python官方正式的停止了对于Python2的维护。Python也正式的进入了Python3的时代。而随着时间的...【详细内容】
2021-12-28  菜鸟学python    Tags:Python4   点击:(1)  评论:(0)  加入收藏
学习Python的初衷是因为它的实践的便捷性,几乎计算机上能完成的各种操作都能在Python上找到解决途径。平时工作需要在线学习。而在线学习的复杂性经常让人抓狂。费时费力且效...【详细内容】
2021-12-28  风度翩翩的Python    Tags:Python   点击:(1)  评论:(0)  加入收藏
Python 是一个很棒的语言。它是世界上发展最快的编程语言之一。它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性。整个 Python 及其库的生态系统使...【详细内容】
2021-12-27  IT资料库    Tags:Python 库   点击:(2)  评论:(0)  加入收藏
菜单驱动程序简介菜单驱动程序是通过显示选项列表从用户那里获取输入并允许用户从选项列表中选择输入的程序。菜单驱动程序的一个简单示例是 ATM(自动取款机)。在交易的情况下...【详细内容】
2021-12-27  子冉爱python    Tags:Python   点击:(4)  评论:(0)  加入收藏
有不少同学学完Python后仍然很难将其灵活运用。我整理15个Python入门的小程序。在实践中应用Python会有事半功倍的效果。01 实现二元二次函数实现数学里的二元二次函数:f(x,...【详细内容】
2021-12-22  程序汪小成    Tags:Python入门   点击:(32)  评论:(0)  加入收藏
Verilog是由一个个module组成的,下面是其中一个module在网表中的样子,我只需要提取module名字、实例化关系。module rst_filter ( ...); 端口声明... wire定义......【详细内容】
2021-12-22  编程啊青    Tags:Verilog   点击:(8)  评论:(0)  加入收藏
运行环境 如何从 MP4 视频中提取帧 将帧变成 GIF 创建 MP4 到 GIF GUI ...【详细内容】
2021-12-22  修道猿    Tags:Python   点击:(6)  评论:(0)  加入收藏
面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计。类(Class)和对象(Object)类是用来描述具有相同属性和方法对象的集合。对象是类的具体实例。比如,学生都有...【详细内容】
2021-12-22  我头秃了    Tags:python   点击:(9)  评论:(0)  加入收藏
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如大家熟悉的print,range、input等,也有不是很熟,但是很重要的,如enumerate、zip、join等,Python内置的这些函数非常...【详细内容】
2021-12-21  程序员小新ds    Tags:python初   点击:(5)  评论:(0)  加入收藏
Hi,大家好。我们在接口自动化测试项目中,有时候需要一些加密。今天给大伙介绍Python实现各种 加密 ,接口加解密再也不愁。目录一、项目加解密需求分析六、Python加密库PyCrypto...【详细内容】
2021-12-21  Python可乐    Tags:Python   点击:(8)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条