5、Django-模型-models
概念:
基本模板:模板 其实就是我们使用的HTML写好的页面
-- 先在应用的目录下创建模板文件夹templates、然后在templates中创建模板文件、如html
-- 最后在views.py中去渲染模板、使用render函数将模板返回给用户:return render(request, '.html')
定义模板:
-- 模板里就是要对数据库进行操作
#在models.py中引入models模块
from django.db import models
1、编写models.py
-----------------------------------------------------------------------------------
from django.db import models
#模型 <===> 对应表结构
#类属性 <===> 表字段
#对象 <===> 表的一行数据
#创建模型的类、固定写法
#userModel 表名
class UserModel(models.Model):
#这里创建表的字段
name = models.CharField(max_length=30, unique=True) #对应sql中的: name varchar(30) unique=True:指定唯一性
age = models.IntegerField(default=18) #对应SQL中:age int default 18
sex = models.CharField(max_length=20) #对应SQL中的:sex varchar(20)
is_delete = models.BooleanField(default=False) #是否删除、显示在用户界面
#上面的表结构创建后需要将数据迁移到数据库
#注意:如果上面的表结构修改后、一定要重新执行数据的迁移
# python manage.py makemigrations #生成迁移的表文件
"""
#执行后提示:
Migrations for 'app_name':
app_name\migrations\0001_initial.py #0001_initial.py 生成的迁移文件的路径
- Create model UserModel #创建模型(表) :UserModel
"""
# python manage.py migrate #将文件迁移到数据库
"""
#导入数据:
Apply all migrations: admin, app_name, auth, contenttypes, sessions
Running migrations:
Applying app_name.0001_initial... OK #说明导入成功
"""
#数据导入后手动加入数据
---------------------------------------------------------------------------------------------------------
2、编辑视图函数:views.py
---------------------------------------------------------------------------------------------
from django.shortcuts import render
from django.http import HttpResponse
from app_name.models import * #导入模型models
#从数据库中获取用户信息的函数
def get_user_info(request):
#模型操作:获取所有的用户信息
#拿到的是数据表里的每条数据
users = UserModel.objects.all()
#返回渲染模板、模板在templates中创建users.html做显示
#{使用字典去传参给html模板} 自定义key: 传入的value
return render(request, 'users.html', {'users': users})
-------------------------------------------------------------------------------------------
3、编写html文件进行渲染
-- 在templates目录下创建 :users.html
-----------------------------------------------------------------------------------------
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户信息</title>
</head>
<body>
<h2>sqlite中的用户信息</h2>
<hr>
<ul>
//这里使用for循环遍历users拿到的值
{% for user in users %}
<li>{{ user.name }}, {{ user.age }}, {{ user.sex }}</li>
{% endfor %}
</ul>
</body>
</html>
---------------------------------------------------------------------------------------------
4、编辑子路由:urls.py
-- 主路由在前面加了后可以不用管
--------------------------------------------------------------------------
from django.urls import path
from app_name.views import *
#这是一个子路由、子路由和主路由写法一样、直接在主路由调用即可
urlpatterns = [
#获取用户信息的路由
#'users/' 子路由访问的路径
#get_user_info:访问视图views.py中的函数
#name='users' :命名、可随意取
path('users/', get_user_info, name='users'),
]
------------------------------------------------------------------------------
5、主路由:urls.py
-----------------------------------------------------------------------------
from django.urls import path, include
from app_name.views import *
urlpatterns = [
#通过子路由调用视图函数
#一个应用对应一个子路由
#这里使用了include模块
#这里有两层路由:先匹配app_name/ 、匹配成功后去到app_name应用下去找子路由usrls.py
path('app_name/', include('app_name.urls'))
]
-----------------------------------------------------------------------------------------------------
导入表:
直接运行程序:
运行:python manage.py runserver
访问:http://127.0.0.1:8000/app_name/users/