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'),
]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/78541.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将输入帧上下文打包到下一个帧的预测模型中用于视频生成

Paper Title: Packing Input Frame Context in Next-Frame Prediction Models for Video Generation 论文发布于2025年4月17日 Abstract部分 在这篇论文中,FramePack是一种新提出的网络结构,旨在解决视频生成中的两个主要问题:遗忘和漂移。 具体来说,遗忘指的是在生成视…

STM32 串口USART

目录 常见的通信方式 串行通信和并行通信 全双工,半双工和单工通信 同步通信和异步通信 通信速率 常见的通信协议 串口基础知识 电平特性 串口传输协议 STM32F103的USART资源 端口引脚 数据寄存器单元 发送接收控制单元 实现串口发送 printf…

Taro on Harmony :助力业务高效开发纯血鸿蒙应用

背景 纯血鸿蒙逐渐成为全球第三大操作系统,业界也掀起了适配鸿蒙原生的浪潮,用户迁移趋势明显,京东作为国民应用,为鸿蒙用户提供完整的购物体验至关重要。   去年 9 月,京东 AP…

gem5-gpu教程05 内存建模

memory-modeling|Details on how memory is modeled in gem5-gpu gem5-gpu’s Memory Simulation gem5-gpu在很大程度上避开了GPGPU-Sim的单独功能模拟,而是使用了gem5的执行中执行模型。因此,当执行存储/加载时,内存会被更新/读取。没有单独的功能路径。(顺便说一句,这…

【python】lambda用法(结合例子理解)

目录 lambda 是什么? 为什么叫 lambda? 语法 举例 1. 最简单的 lambda:单个数字处理 2. 用 lambda 排序一组字符串(按照长度排序) 3. 在列表里找出绝对值最小的数字 4. 给 map() 用 lambda 5. 组合使用:筛选出偶数 lambda 和 def 的对比 lambda 适合用在什么地…

【ROS2】机器人操作系统安装到Ubuntu22.04简介(手动)

主要参考: https://book.guyuehome.com/ROS2/1.系统架构/1.3_ROS2安装方法/ 官方文档:https://docs.ros.org/en/humble/Installation.html 虚拟机与ubuntu系统安装 略,见参考文档 ubutun换国内源,略 1. 设置本地语言 确保您有…

C 调用 C++:extern “C” 接口详解与实践 C/C++混合编译

C 调用 C:extern “C” 接口详解与实践 核心问题在于 C 编译器会对函数名进行“修饰”(Name Mangling)以支持函数重载等特性,而 C 编译器则不会。此外,C 语言本身没有类、对象等概念。为了解决这个问题,我…

汽车制造行业如何在数字化转型中抓住机遇?

近年来,随着新一轮科技革命和产业变革的深入推进,汽车制造行业正迎来一场前所未有的数字化转型浪潮。无论是传统车企还是新势力品牌,都在积极探索如何通过数字化技术提升竞争力、开拓新市场。那么,在这场变革中,汽车制…

k8s学习记录(五):Pod亲和性详解

一、前言 上一篇文章初步探讨了 Kubernetes 的节点亲和性,了解到它在 Pod 调度上比传统方式更灵活高效。今天我们继续讨论亲和性同时Kubernetes 的调度机制。 二、Pod亲和性 上一篇文章中我们介绍了节点亲和性,今天我们讲解一下Pod亲和性。首先我们先看…

HarmonyOS:Navigation实现导航之页面设置和路由操作

导读 设置标题栏模式设置菜单栏设置工具栏路由操作页面跳转页面返回页面替换页面删除移动页面参数获取路由拦截 子页面页面显示类型页面生命周期页面监听和查询 页面转场关闭转场自定义转场共享元素转场 跨包动态路由系统路由表自定义路由表 示例代码 Navigation组件适用于模块…

雪花算法

目录 一、什么是雪花算法 二、使用雪花算法 ​三、使用UUID 使用自增主键是数据库中常用的唯一标识,今天尝试使用mybatisplus来实现三种方式的主键ID 使用起来也很简单 用注解指定一下使用那种方式的主键 一、什么是雪花算法 一种特殊的算法可以计算得到一个唯…

HarmonyOs @hadss/hmrouter路由接入

参考文档:官方文档 在根目录oh-package.json5配置 {"dependencies": {"hadss/hmrouter": "^1.0.0-rc.11"} }加入路由编译插件 hvigor/hvigor-config.json文件 {"dependencies": {"hadss/hmrouter-plugin": &…

C++学习笔记(三十八)——STL之修改算法

STL 算法分类: 类别常见算法作用排序sort、stable_sort、partial_sort、nth_element等排序搜索find、find_if、count、count_if、binary_search等查找元素修改copy、replace、replace_if、swap、fill等修改容器内容删除remove、remove_if、unique等删除元素归约for…

Crawl4AI 部署安装及 n8n 调用,实现自动化工作流(保证好使)

Crawl4AI 部署安装及 n8n 调用,实现自动化工作流(保证好使) 简介 Crawl4AI 的介绍 一、Crawl4AI 的核心功能 二、Crawl4AI vs Firecrawl Crawl4AI 的本地部署 一、前期准备 二、部署步骤 1、检查系统的网络环境 2、下载 Crawl4AI 源…

32单片机——外部中断

STM32F103ZET6的系统中断有10个,外部中断有60个 1、中断的概念 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力 eg::你打开火&…

UG NX二次开发(C#)-获取具有相同属性名称的体对象

文章目录 1、前言2、在UG NX中的属性的赋予3、通过UG NX二次开发获取相同属性的体对象1、前言 UG NX中每个对象都可以属于属性的,包括体、面、边、特征、基准等。在QQ群中有个群有提出一个问题,就是获取相同属性的体对象,然后将这个体对象导出到一个part文件中。我们今天先…

手动实现legend 与 echarts图交互 通过元素和js事件实现图标某项的高亮 显示与隐藏

通过html实现legend的样式 提供调用echarts的api实现与echarts图表交互的效果 实现饼图element实现类似于legend与echartstu表交互效果 效果图 配置代码 <template><div style"height: 400px; width: 500px;background-color: #CCC;"><v-chart:opti…

SpringBoot与BookKeeper整合,实现金融级别的日志存储系统

BookKeeper的优势 高吞吐量和低延迟 分布式架构: Apache BookKeeper采用分布式的架构设计&#xff0c;能够支持高并发的写入和读取操作。 批量写入: 支持批量写入日志条目&#xff0c;显著提高写入效率。 异步I/O: 使用异步I/O操作&#xff0c;减少等待时间&#xff0c;提升…

【Bug】 [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

当你在进行深度学习相关操作时&#xff0c;若因缺少本地的 CA 证书而无法下载资源&#xff0c;下面为你介绍几种解决办法&#xff1a; 方法一&#xff1a;更新 CA 证书 在大多数 Linux 发行版中&#xff0c;你可以使用包管理器来更新 CA 证书。例如&#xff0c;在基于 Debian…

Vue3中AbortController取消请求的用法详解

在 Vue3 中&#xff0c;AbortController 用于取消 fetch 请求&#xff0c;避免组件卸载后仍执行异步操作导致的潜在问题&#xff08;如内存泄漏或更新已销毁组件的状态&#xff09;。以下是详细用法和最佳实践&#xff1a; 一、基本用法 创建 AbortController 实例 在组件 setu…