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/

posted @ 2024-07-01 22:30  little小新  阅读(4)  评论(0编辑  收藏  举报