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=

最低0.47元/天 解锁文章
534

被折叠的 条评论
为什么被折叠?



