Django创建的应用目录详细解释以及如何操作数据库自动创建表
创建好Django项目后 如果要创建
python manage.py startapp 模块名模块 使用
我创建一个system模块后是
注意:urls是我自己建的文件
1.migrations目录
存放数据库的迁移文件,当models.py中模型定义发生变化时,通过迁移操作能同步数据库结构变化 __init__ 使该目录成为Python包
2.admin.py
作用: 用于将模型注册到Django自带的管理后台,能方便对模型数据进行可视化的增删改查操作
关系:依赖models.py中定义的模型,注册管理后台可操作对应数据模型。
3.app.py
作用: 定义应用的相关配置类,比如应用名称,标签等信息,可在项目配置中引用。
关系: 是应用配置相关文件,为应用在项目中的配置和管理提供支持。
4.model.py
作用: 核心文件之一,用于定义数据库模型类,描述数据库表结构,字段属性,以及表与表之间的关系等。
关系: 是数据库操作的基础,其他涉及数据操作和展示的文件如views,admin都依赖这里定义模型
5.tests.py
作用:编写单元测试用例,用于测试应用各个功能模块是否正常工作,保证代码质量和稳定性
关系:与其他功能文件(如view.py、models.py) 关联,针对这些文件中的功能编写测试.
6.urls.py
作用:定义应用内的URL路由规则,将不同的URL请求映射到对应的视图函数或类视图,决定如何处理用户请求
关系:与view.py配合,urls.py 确定URL与视图对应关系,视图处理具体业务逻辑
7.views.py
作用:处理用户请求,调用models.py中的模型获取数据,进行业务逻辑处理,然后决定返回给用户的内容,可以是函数或类视图
关系:依赖models.py获取数据,通过urls.py定义的路由请求并返回响应
要想让Django自动创建数据库表 首先点配置settings文件
就是你创建Django项目时自动生成的
在里面找到
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# }
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '数据库名',
'USER': '用户名',
'PASSWORD': '密码',
'HOST': 'localhost',
'PORT': '3306',
}
}
配置好后
编写你创建的模块的models.py文件
# 该工具用于匹配数据库中的数据
# 导入django.db的 models核心模块,通过这个模块可以创建各种类型的数据库字段以及定义模型之间的关系
from django.db import models
# Create your models here.# 定义Slider类 继承models.Model 在Django中 所有模型类都必须继承自models.Model 这样Django才能识别他是一个数据库模型,并为其生成相应的数据库表。
class Slider(models.Model):""" 轮播图 """name = models.CharField('名称', max_length=32)desc = models.CharField('描述', max_length=100, null=True, blank=True)types = models.SmallIntegerField('展现的位置', default=10)img = models.ImageField('图片地址', max_length=255, upload_to='%Y%m/slider')reorder = models.SmallIntegerField('排序字段', default=0, help_text="数字越大越靠前")start_time = models.DateTimeField('生效开始时间', null=True, blank=True)end_time = models.DateTimeField('生效结束的时间', null=True, blank=True)target_url = models.CharField('跳转的地址', max_length=255, null=True, blank=True)is_valid = models.BooleanField('是否有效', default=True)created_at = models.DateTimeField('创建时间', auto_now_add=True)updated_at = models.DateTimeField('修改时间', auto_now=True)class Meta:db_table = 'system_slider'ordering = ['-reorder']# 内部类 Meta: 是定义的模型元数据
# db_table 指定改模型在数据库中的对应表名
# ordering 执行改模型在查询时的排序方式
之后需要在setting.py 文件中配置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'system.apps.SystemConfig',
]
installed_apps 列表用于告诉Django项目哪些应用被安装使用,添加应用到这里,Django才会对其进行管理,包括加载应用中的模型,配置等
接下来可以通过
python manage.py check 进行检查是否有问题
这样就是没有问题
然后通过
python.manage.py makemigrations
这个命令 主要作用根据你在项目中对模型models.py文件中定义的 所做的修改 生成对应的数据库迁移文件,在Django中 ,数据库迁移文件是记录模型变化的文件,这些文件位于migrations 目录下
最后 通过
python .lmanage.py migrate 生成数据库表
主要作用就是通过之前生成的迁移文件 应用到数据库中,从而实现数据库结构的更新 使其与项目中定义的模型报错一致
以上操作之后 数据库表就建立ok了!
编写view文件实现获得数据库数据
# 导入 编写好的模型文件
from system.models import Slider
# 导入http
from django import http# 定义方法 获得有效的列表数据
def slider_list(request):# 构建相应的数据结构data = {'meta':{},'objects':[]
}# 通过模型获得数据queryset = Slider.objects.filter(is_valid=True)# 遍历结果集合for item in queryset:data['objects'].append({'id':item.id,......
}) # 返回数据return http.JsonResponse(data)
# 解释
# meta 可以存放一些关于数据的元信息,比如数据总数,页码等
# objects 用于存放数据库中获取并处理后的数据
# 使用Slider模型中的objects管理器的filter方法从数据库中查询数据,filter方法接收关键字作为参数
# is_valid=True 表示筛选出is_valid为True的记录,返回符合条件的集合
# 返回 使用JsonResponse 将整理好的data字典以JSON格式返回给客户端,能够设置合适的响应头
最后配置 urls地址
from django.urls import path
from system import viewsurlpatterns = [path('slider/list', views.slider_list, name='slider_list'),
]