Django之路第三篇:第一个Templates

概述

  Templates就是一种HTML文件

  使用了Django模板语言(Django Template Language,DTL)

  可以使用第三方模板(如Jinja2)

步骤

  • 在APP的根目录下创建名叫Templates的目录
  • 在该目录下创建HTML文件
  • 在views.py中返回render()

新建的blog/templates/index.html文件内容为:

 1 {# blog/templates/index.html #}
 2 
 3 <!DOCTYPE html>
 4 <html lang="en">
 5 <head>
 6     <meta charset="UTF-8">
 7     <title>Title</title>
 8 </head>
 9 <body>
10     <h1>Hello Blog!</h1>
11 </body>
12 </html>

修改后的blog/views.py文件内容为:

1 # blog/views.py
2 
3 from django.shortcuts import render
4 
5 def index(request):
6     return render(request,'index.html')

通过以上步骤,就可以实现新建index.html文件在浏览器的渲染。

DTL初步使用

1.DTL使用方法

  • render()函数中支持一个dic类型参数
  • 该字典是后台传递到模板的参数,键为参数名
  • 在模板中使用{{参数名}}来直接使用

2.DTL使用步骤

  (1)给blog/views.py文件中的render()函数添加dict参数

1 from django.shortcuts import render
2 
3 def index(request):
4     return render(request,'index.html',{"hello":"Hello Blog!"})

  (2)在blog/templates/index.html文件中使用{{}}

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <h1>hello Blog!</h1>
 9     <h1>{{ hello }}</h1>
10 </body>
11 </html>

经过以上步骤,刷新浏览器既可以看到如下图:

解决Template冲突方案

  Django会按照INSTALLED_APPS中的添加顺序查找Templates

  这样就会照成不同APP下的Templates目录中的同名html文件会造成冲突

解决方案:

  在APP的Templates目录下创建以APP名为名称的目录

  然后将html文件放入新创建的目录下

当前的工程目录结构

myblog

  |-----blog(应用目录)

    |-----migrations(数据移植模块,内容自动生成)

      |------__init__.py

    |-----templates

      |-----blog

        |-----index.html

    |-----__init__.py

    |-----admin.py(应用的后台管理系统配置)

    |-----apps.py(应用的一些配置)

    |-----models.py(数据模块,类似于MVC结构中的Models(模型))

    |-----tests.py(自动化测试模块)

    |-----views.py(执行响应的代码所在模块)

    |-----urls.py(新增路由文件)

  |-----myblog(项目目录)

    |-----__init__.py

    |-----settings.py(项目中的总配置文件)

    |-----urls.py(URL配置文件)

    |-----wsgi.py(Python应用与Web服务器之间的接口)

  |-----db.sqlite3(数据库文件)

  |-----manage.py(与项目进行交互的命令行工具集入口(项目管理器))

原文地址:https://www.cnblogs.com/wanghao123/p/7991254.html