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(与项目进行交互的命令行工具集入口(项目管理器))