Templates,也就是模板文件,算是MTV模型中最好理解的部分了。根据传递进来的数据,渲染成想要的html。下面我们就一起来看看如何操作。
我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。
文章目录
环境搭建
还是和之前一样的步骤,这里就不详细演示每一步的操作了:
- virtualenv创建虚拟环境,这里可以直接用之前的虚拟环境。记得activate环境
django-admin startproject DjangoTemplate
新建项目- pycharm打开项目,注意是在
manage.py
的上一级打开
这里额外说明下,最好是每次单独打开一个项目,不然可能会出现一些奇怪的问题
- 配置解释器为虚拟环境内的python,前一个项目的第三方包都会自动识别
python manage.py startapp App
新建一个应用,并在settings
中注册- mysql创好数据库DjangoTemplate,每次都用新的库,不然会有问题
- 修改配置文件
settings.py
,包括数据库连接信息,全局templates文件路径等等 - 全局
__init__.py
中对pymysql
进行伪装pymysql.install_as_MySQLdb()
- 默认数据迁移
python manage.py migrate
- 创建
App/urls.py
文件,并在根目录下的urls.py
中用include('App.urls')
进行注册 - 创建一个简单的view函数然后
python manage.py runserver
验证基本功能
上述步骤完成后一个基本的项目框架就搭好了。
基本语法
可以参考我之前写的另一篇博客《Saltstack入门到精通教程(五):Jinja详解》。这里的jinja语法就是python中的常用模板语法。Django中虽说不是jinja,但是基本的使用上是差不多的。
同时,这里还有Django模板使用官方文档供查询。
在if还有for这些基本语法之外,有些比较特殊的拿出来下面专门说一说。
模板中的点语法
首先创建一个model
class student(models.Model):
name = models.CharField(max_length=16)
生成迁移,同步到数据库
(django) [fuhx@testmachine DjangoTemplate]$ python manage.py makemigrations
Migrations for 'App':
App/migrations/0001_initial.py
- Create model student
(django) [fuhx@testmachine DjangoTemplate]$ python manage.py migrate
Operations to perform:
Apply all migrations: App, admin, auth, contenttypes, sessions
Running migrations:
Applying App.0001_initial... OK
利用Django自带的类似于ipython的交互shell给数据库添加点数据
(django) [fuhx@testmachine DjangoTemplate]$ python manage.py shell
>>> from App.models import student
>>> for i in range(10):
... stu = student(name='james{}'.format(str(i)))
... stu.save()
...
>>>
有了数据我们就可以开始正式操作了。
调用实例的属性
创建一个获取全部数据的路由和view函数
path('getstudents/',views.getstudents)
def getstudents(request):
students = student.objects.all()
context = {
'students': students,
}
return render(request,'getstudents.html',context=context)
其中的h5文件如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Student List</title>
</head>
<body>
<ul>
{% for student in students %}
<li>{
{ student.name }}</li>
{% endfor %}
</ul>
</body>
</html>
view函数中给模板文件传递进去的