Django多数据库配置:mysql、mongo、redis、达梦

夸克资源分享:
表情包:https://pan.quark.cn/s/5b9ddeb237fe
工具箱:https://pan.quark.cn/s/aa2d6a730482,图吧、美蛋、路遥、入梦等
Fiddler Everywhere抓包:https://pan.quark.cn/s/6b1e2fbae019
Adobe:https://pan.quark.cn/s/13e39cfeaadb,先看安装教程
JetBranis开发者工具:https://pan.quark.cn/s/16e94dcff1f7,先看安装教程下的jetbra教程
逆向工具:https://pan.quark.cn/s/50e93c8ca54c
前端项目搭建集锦:https://blog.youkuaiyun.com/randy521520/article/details/146998467

UV教程:Python多版本管理神器
Django教程:Django项目开发全链路:数据库操作、多环境配置、windows/linux项目部署一站式指南
DRF教程:django rest framework:从零开始搭建RESTful API

一、Django多数据库配置-mysql连接

1.进入项目目录,运行 uv run python manage.py startapp mysqlDemo新建应用,未使用uv管理工具可使用python manage.py startapp mysqlDemo
在这里插入图片描述
2.修改django的setting.py文件中的DATABASES、INSTALLED_APPS配置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'mysqlDemo'
]
DATABASES = {
   
   
    'default': {
   
   
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django',
        'USER':  'root',
        'PASSWORD': 'root',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

3.修改mysqlDemo>models.py,新建数据模型

from django.core.validators import MaxValueValidator, MinValueValidator
from django.db import models


class Class(models.Model):
    """
    班级模型

    字段说明:
    - name: 班级名称,从预定义的年级名称中选择,具有唯一性
    - class_code: 班级代码,对应年级编号,具有唯一性
    - department: 班级类型,区分理科班、文科班等不同类型
    - max_students: 最大学生数,限制班级容量在1-100人之间
    - established_date: 成立日期,记录班级成立时间
    - graduation_date: 预计毕业日期,可为空的毕业时间预估
    - is_active: 是否活跃,标识班级当前状态
    - head_teacher: 班主任,外键关联到用户模型,可为空
    - created_at: 创建时间,自动记录数据创建时间
    - updated_at: 更新时间,自动记录最后修改时间
    - description: 班级描述,可选的详细说明文本

    预定义数据:
    - class_info: 包含1-8年级的详细信息字典
    - name_choices: 基于class_info生成的班级名称选项
    - class_code_choices: 基于class_info生成的班级代码选项
    - department_choices: 班级类型选项列表
    """
    class_info = {
   
   
        '1':{
   
   
            'name': '一年级',
            'description': '一年级 - 小学起始阶段,6-7岁'
        },
        '2':{
   
   
            'name': '二年级',
            'description': '二年级 - 小学基础阶段,7-8岁'
        },
        '3':{
   
   
            'name': '三年级',
            'description': '三年级 - 小学巩固阶段,8-9岁'
        },
        '4':{
   
   
            'name': '四年级',
            'description': '四年级 - 小学提高阶段,9-10岁'
        },
        '5':{
   
   
            'name': '五年级',
            'description': '五年级 - 小学进阶阶段,10-11岁'
        },
        '6':{
   
   
            'name': '六年级',
            'description': '六年级 - 小学毕业阶段,11-12岁'
        },
        '7':{
   
   
            'name': '七年级',
            'description': '七年级 - 初中起始阶段(初一),12-13岁'
        },
        '8':{
   
   
            'name': '八年级',
            'description': '八年级 - 初中中间阶段(初二),13-14岁'
        }
    }

    # 基本信息
    name_choices = [(v['name'], v['description']) for k, v in class_info.items()]
    name = models.CharField(
        max_length=100, choices=name_choices,verbose_name='班级名称',unique=True,
        db_comment='\n'.join([f'{
     
     name}{
     
     description}' for name, description in name_choices])
    )

    class_code_choices = [(k, v['name']) for k, v in class_info.items()]
    class_code = models.CharField(
        max_length=20, choices=class_code_choices, verbose_name='班级代码', unique=True,
        db_comment='\n'.join([f'{
     
     code}{
     
     name}' for code, name in class_code_choices])
    )

    department_choices = [
        ('science', '理科班'),
        ('arts', '文科班'),
        ('commercial', '商科班'),
        ('general', '普通班'),
        ('experimental', '实验班'),
        ('international', '国际班'),
    ]
    department = models.CharField(
        max_length=20, choices=department_choices, verbose_name='班级类型',
        db_comment='\n'.join([f'{
     
     code}{
     
     dep}' for code, dep in department_choices])
    )

    # 容量限制
    max_students = models.PositiveIntegerField(
        default=50,
        validators=[MinValueValidator(1), MaxValueValidator(100)],
        verbose_name='最大学生数',
        db_comment='最大学生数:1-100人'
    )

    # 时间信息
    established_date = models.DateField(verbose_name='成立日期')
    graduation_date = models.DateField(verbose_name='预计毕业日期', null=True, blank=True)
    is_active = models.BooleanField(default=True, verbose_name='是否活跃',db_default=True)

    # 元数据
    created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
    updated_at = models.DateTimeField(auto_now=True, verbose_name='更新时间')
    description = models.TextField(verbose_name='班级描述', blank=True)

    class Meta:
        db_table = 'class'
        verbose_name = '班级'
        verbose_name_plural = '班级管理'
        ordering = ['class_code', 'name']
        indexes = [
            models.Index(fields=['class_code', 'department']),
            models.Index(fields=['is_active']),
        ]

4.运行uv add pymysql安装pymysql,未使用uv管理工具可使用pip install pymysql
在这里插入图片描述
5.修改setting.py同级目录下的__init__.py

import pymysql


pymysql.install_as_MySQLdb()

6.进入项目目录,依次运行下面命令,即可在对应数据库中创建模型中的数据模型(表),第一次运行会创建一些Django内置的表

 uv run python manage.py makemigrations mysqlDemo #根据模型变更创建新的数据库迁移文件,未使用uv管理工具可使用pthon manage.py makemigrations school
 uv run python manage.py migrate#同步模型与数据库,未使用uv管理工具可使用python manage.py migrate

在这里插入图片描述
7.修改mysqlDemo>views.py

import json
import time
from .models import Class
from django.core import serializers
from django.core.exceptions import ValidationError
from django.http import HttpResponse, JsonResponse
from django.utils.decorators import method_decorator
from django.views import View
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_http_methods


@method_decorator(csrf_exempt, name='dispatch')
@method_decorator(require_http_methods(['GET']), name='dispatch')
class AddClassView(View):
    def get(self, request):
        try:
            class_code = request.GET.get('code')
            name = Class.class_info[class_code]['name']
            Class.objects.create(
                name=name, class_code=class_code, department=
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

局外人LZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值