Django 模板
模板的概念:
模板是一个文本,用于分离文档的显示格式和内容。
类似于jsp,asp等对页面的操作
应用实例
在之前已经创建好的项目Web1中创建 Folder 目录
后建立 page1.html文件
page1.html 中代码如下:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<h2>{{first}}</h2>
</body>
</html>
注:变量使用了双括号。
写入模板文件的路径
修改settings.py(配置文件)
修改 TEMPLATES 中的 DIRS 为 [BASE_DIR+”/Folder”],
如下所示:
...TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR+"/Web1/Folder"], # 修改模板位置
'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',
],
},
},
]
-
注意:一定要在
BASE_DIR(项目地址)后面加’+’(连接地址字符串)要不会因为路径配置不对找不到文件
-
在VS中不能直接把文件夹添加最外面与项目(最外面那个Web1)同级
只好在Web1(配置文件)文件夹内添加Folder文件夹
实际开发都会在外部添加Django应用,自动生成许多文件
之后修改创建过的装载文档 view.py
增加一个新的对象,用于向模板提交数据:
代码:
from django.http import HttpResponse
from django.shortcuts import render
def hello(request):
connect_text = {} #初始化context为dict(map)
connect_text['first'] = 'Hello World!' #设置first变量的值为字符串 Hello World!
return render(request, 'Page1.html', connect_text);
#render()用来链接Page1.html文档中的变量使用和connect_text字典
render 底层也是 HttpResponse
render 接受了一个字典 connect_text 作为参数。
connect_text 字典中元素的键值 “first” 对应了模板中的变量 “{{ first }}”
此时的参数中的 Page1.html 将在BASE_DIR/Folder 构成的默认DIRS 查找
源码中可以看到:
此时传入的connect_text字典将会在’Page1.html’文档匹配到Key然后取Value,并用HttpResponse返回到Response头中
运行
再访问访问 http://127.0.0.1:8000/index,(命令行中启动python manage.py runserver 0.0.0.0:8000,可指定ip以及端口)可以看到页面:
此时已完成使用基本模板来输出数据,实现数据与视图分离
-
补齐一下一下些同学所关心的应用,项目的概念问题
-
项目中可以有多个应用,本身自带的且与项目名称同名的是网站基本配置文件,
除此之外,为个人独立创建的应用,可能是某一个功能的集合,也可能是某个特定的模块。。。