第二单元知识点
模版页面*
模版页面返回
现在再来思考一下,只是简单的返回一个html字符串,我们可以满足吗?难道平时的网站就这么朴素吗?
那当然是不行的,返回一个字符串这也太low了,也不好看,那么现在就来返回一个正式HTML页面吧!
模版配置
首先要告诉Django,你准备把接下来的html页面存放在哪里,那么需要打开settings.py文件,找到TEMPLATES选项,修改其中的DIRS属性,在这里添加我们的html文件夹位置一般我们会把存放HTML的文件夹名字命名为template,翻译过来就叫做模版文件,至于为啥叫模版,我们稍后来揭晓
创建模版
有了这个文件夹的配置之后,接下来在项目根目录下创建与配置同名的文件夹template/
并在其中书写一个简单的html,并命名为index.html
视图渲染
有了html,目录也配置好了,那么紧接着就是让视图去返回这个文件,那么现在我们要引入一个新的方法叫做render,这个方法专门用来返回一个html页面,并且在未来,我们还会了解到这个方法的更高级用处,就是传递上下文模版变量
修改app下的视图方法,返回这个页面,页面路径不需要绝对路径,使用*template/*下的相对路径即可
视图渲染
有了html,目录也配置好了,那么紧接着就是让视图去返回这个文件,那么现在我们要引入一个新的方法叫做render,这个方法专门用来返回一个html页面,并且在未来,我们还会了解到这个方法的更高级用处,就是传递上下文模版变量
修改app下的视图方法,返回这个页面,页面路径不需要绝对路径,使用template/下的相对路径即可
而视图部分,此时可以通过在视图函数内部定义相关的模版变量,来让它通过视图函数去返回
在页面中,模版变量叫做weather**,那么在视图函数代码中,就需要有一个映射格式数据,他的key值对应html页面中的模版变量,而value将是这个模版变量渲染的结果
for 标签
使用模板中使用标签语言{% for %}
和{% endfor%}
,对视图函数传递的数据集进行遍历访问,比如上面传递的字符串,列表,元祖,字典,集合这样的数据
和普通模板变量不同,模板标签使用大括号百分号的组合{% lag %}
,具有有一些特殊的功能性
模板中的标签{% for %}
与Python中的for循环类似,要记得有闭合模板标签{{ endfor }}
if 标签
在模版中,可以通过{% if %}
标签语法来进行模板变量的值判断;
静态资源
静态资源概念
虽然有了模板页面,可以来展示一些标签的效果,但是整个 HTML 还是感觉很丑陋
我们还要继续引入一些类似css、img、js等静态资源,来装饰我们的页面
静态资源路径配置
在 Django 中模板页面的静态资源使用,不能像之前写 HTML 代码直接引入
需要我们首先在项目中创建目录保存对应的静态资源,该目录名常为static/
- 在settings中配置静态文件目录路径,添加如下内容
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), )
在项目中创建***static/***目录,***static/目录下创建专门保存图片的img/***目录,在里面存一张图片
project/
project/
app/
template/
static/
img/
1.jpg
ORM映射
ORM映射概念
ORM映射关系,是django与数据库之间的一个桥梁,可以使开发者不再关注如何去编写SQL语句,直接通过一套ORM所提供的API接口即可方便对各种数据库进行交互
M:和数据库进行交互,进行数据处理
V:视图
T:template模板
生成迁移文件
接下来通过manage.py命令行管理工具提供的两条,创建我们所需要的数据
注意:默认django本身就已经需要一些数据的创建,所以我们在初次执行以下两条命令时可能会看到很多数据表和字段的创建,不要惊讶,这是正常的
python manage.py makemigrations# 创建数据库迁移文件
执行迁移`
python manage.py migrate # 根据数据库迁移文件生成对应 SQL 语句并执行
admin控制台概念
admin控制台是 django 为我们提供的一个非常便捷的用来管理数据库的界面
在主路由文件下,其实你已经看到了它对应的路由设置:path(‘admin/’, admin.site.urls)
admin控制台超级用户
进入admin界面,初次访问连接:127.0.0.1/admin,会提示我们输入账号密码,这是因为admin界面是需要一个超级管理员来登陆访问的,所以还需要我们创建对应的admin界面下的超级用户
- 创建admin超级用户,使用manage.py命令行工具执行如下命令并按照提示创建即可
python manage.py createsuperuser
ORM视图操作
子应用视图使用ORM
最后,在视图中进行数据库操作,获取数据库中的数据来渲染到页面上,修改之前所编写的视图,并使用ORM的数据库操作获取数据
如何通过ORM操作模型类
这里使用all方法,代表获取某表中的所有数据
# myapp/views.py
from django.shortcuts import render
from myapp import models
def index(request):
weathers = models.Weather.objects.all()
content = {
"weathers": weathers,
}
return render(request, 'index.html', content)
模板标签***{% for xxx in xxxs %}***可以用来在模板.面出迭代访问取出每一个数据
***{% empty %}***标签用来判断当循环访问数据为空时要做的事情
因为HTML中并没有像Python缩进这样的方式来控制代码块,最后循环标签要有***{% endfor %}***标签进行结束