企业级django项目搭建

本文围绕Django项目展开,涵盖前端代码启动、项目搭建(环境与项目配置、解决跨域问题)、app应用(重写User模型、创建apps包)、规范后端接口(实现增删改查、统一响应结构、重写分页)、视图集使用(功能验证、登录实现、完善注册接口)等内容,还提及在线接口文档和依赖文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端代码

下载后,打开终端,npm install ,然后 npm run dev 启动项目
utils文件中,url.js 配置了请求路径。 文件见:提取码 h2jx

项目搭建

环境配置

a、找个位置运行:python -m django startproject tkplat 项目名。

  • 先搞个虚拟环境, 再安装django。 参考
  • 创建项目之后,用pycharm打开,settings——project:tkplat——python interpreter解析器选到你的虚拟环境

b、gitee中,创建仓库, 名称和项目名字一样,叫tkplat (用gitee进行代码管理)
c、项目中git init ,commit,push等推到gitee。
d、生成requirements.txt文件,进行包管理(pip freeze >> requirements.txt生成,pip install -r requirements.txt),文章后面我把它贴出来

  • 先执行一次,看看效果,是否是新虚拟环境,git使用是否正常,后续有装新的包,就重新生成一次requirements.txt

项目配置

settings中改时区

LANGUAGE_CODE = 'zh-hans'  # 中文
TIME_ZONE = 'Asia/Shanghai'  # 时区
USE_I18N = True  # internationalization
USE_TZ = False  # true 使用UTC时间,false 采用本地时区

django连接mysql

a、mysql环境(略) -网盘有傻瓜式windows版本mysql,注意连接时把时区选上不然连不上
在这里插入图片描述

b.创建库

CREATE DATABASE `tkplat` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

c .配置setting

DATABASES = {
   
   
    'default': {
   
   
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'tkplat',            # 数据库名
        'USER': 'root',            # 用户名
        'PASSWORD': 'sq',        # 密码
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'TEST':{
   
   
            'CHARSET': 'utf8',
            'COLLATION': 'utf8_general_ci', }
                }
}

执行迁移(往mysql中生成基础表)Tools- run manage.py task ,后, migrate (社区版就用 python manage.py migrate)
运行时发现,需要装python库mysqlclient ,用时对python库进行管理 pip freeze >> requirements.txt
执行成功后,

  • 可以启动项目了看见django火箭了, (点右上角启动按钮 如果社区版想配置快捷启动参考启动配置或者python manage.py runserver)
    配置之后,可以debug的方式运行,也可以不debug
    在这里插入图片描述

  • 基本表也生成了
    在这里插入图片描述

跨域问题

(前端代码绑定了后端host后,去访问前端页面调后端接口时,会跨域)
当使用浏览器访问时,会提示跨域
在这里插入图片描述

解决:settings中进行配置
首先要安装:
在这里插入图片描述

在这里插入图片描述

'corsheaders.middleware.CorsMiddleware',    # 跨域


# 配置跨域,如果为True,表示允许所有的域名跨域访问
CORS_ORIGIN_ALLOW_ALL = True

# 配置跨域, 允许所有的请求头
CORS_ALLOW_HEADERS = ('*')

配置之后,就成功了
在这里插入图片描述

app应用

使用python manage.py startapp system (后续使用这个时我直接省略前面的)
注意: 生成的一些新的文件,pycharm中是红色的,都给他git add,别忘记了,不然gitee中代码不全,我就犯了这个错误~~
settings中INSTALLED_APPS注册应用(略)
对于django不太熟练的,可以现在system中,models.py 写个简单的模型:
如下:


# 学生表(名字,性别)
class Student(models.Model):
    GENDER_CHOICES = (
        (1, "男"),  # 前面是存储的值,后面是显示的值(admin页面显示的值)
        (2, "女"),
    )
    name    = models.CharField(max_length=100)
    sex = models.SmallIntegerField(choices=GENDER_CHOICES, verbose_name="性别", null=True, blank=True, help_text="性别")

执行命令:makemigrations, 和migrate
数据库中就有了学生表
在system应用 的 admin.py 中, 访问admin页面(先creatsuperuser一个账号),也有了这个模型

from . import models
admin.site.register(models.Student)

如下图:就可以确认新增的应用已经成功了
在这里插入图片描述

重写User模型

先写一个模型基类。新建 utils包。 新建models.py, 其中定义可以公共使用的模型字段,如创建人,创建时间,更新时间,更新人,id等,

  • 其中settings.AUTH_USER_MODEL,会报错,是因为没有配置
"""
@Remark: 自定义模型基类
"""
from django.db import models
from tkplat_django import settings  # 项目配置文件(改成项目名)




# 2.模型抽象基类A
class BaseModel(models.Model):
    # AutoField类型字段,自增长的IntegerField类型字段,primary_key=True表示主键【用这个好看点】
    id = models.AutoField(primary_key=True, verbose_name="ID", help_text="ID")

    # 2.关联字段_创建人
    creator = models.ForeignKey(to=settings.AUTH_USER_MODEL, null=True, related_name="%(app_label)s_%(class)s_creator",
                                verbose_name='创建人', help_text="创建人", on_delete=models.SET_NULL, db_constraint=False)

    # 3.其他字段
    modifier = models.CharField(max_length=50, null=True, blank=True, help_text="修改人", verbose_name="修改人")  # 填真实姓名
    create_datetime = models.DateTimeField(auto_now_add=True, null=True, blank=True, help_text="创建时间",
                                           verbose_name="创建时间")
    update_datetime = models.DateTimeField(auto_now=True, null=True, blank=True, help_text="修改时间", verbose_name="修改时间")
    desc = models.CharField(max_length=255, verbose_name="备注", null=True, blank=True, help_text="备注")

    def __str__(self):
        if hasattr(self, 'name'):
            return self.name
        #elif hasattr(self, 'url'):
            #return self.url
        else:
            return self.desc

    class Meta:
        abstract = True
        verbose_name = '基础模型'
        verbose_name_plural = verbose_name

system应用中的models.py 中 , 新增用户模型, 并且继承模型基类

from django.db import models
from django.contrib.auth.models import AbstractUser
from utils.models import BaseModel
TABLE_PREFIX = "sys_"   # 表前缀


# 2.用户表
class User(AbstractUser, BaseModel):
    IDENTITY_CHOICES = (
        (0, "超级管理员"),
        (1, "系统管理员"),
        (2, "普通用户"),
    )
    GENDER_CHOICES = (
        (1, "男"),         # 前面是存储的值,后面是显示的值(admin页面显示的值)
        (2, "女"),
    )
    # 1.重写2个字段
    username = models.CharField(max_length=50, unique=True, db_index=True, verbose_name='用户名', help_text="用户名")
    email = models.EmailField(max_length=60, verbose_name="邮箱", null=True, blank=True, help_text="邮箱")

    # 3.自定义字段
    realname = models.CharField(max_length=30, verbose_name="真实姓名", help_text="真实姓名")
    mobile = models.CharField(max_length=11, verbose_name="电话", null=True, blank=True, help_text="电话")
    identity = models.SmallIntegerField(choices=IDENTITY_CHOICES, verbose_name="用户类型", null=True, blank=True, default=1,
                                        help_text="用户类型")
    avatar = models
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值