# drf_backend **Repository Path**: davidhu1/drf_backend ## Basic Information - **Project Name**: drf_backend - **Description**: 通用DRF后端项目,用于为各种前端数据需求提供数据接口 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-05-14 - **Last Updated**: 2025-01-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # drf_backend项目介绍 ## 介绍 通用DRF后端项目,用于为各种前端数据需求提供数据接口 ## Django REST framework项目搭建步骤 1. 新建一个项目目录,例如drf_backend; 2. 使用python -m venv venv创建venv虚拟环境; 3. windows下使用cd Scripts/目录下运行activate激活虚拟环境; 4. 安装Django,djangorestframework使用如下代码: ```python pip install django pip install djangorestframework ``` 5. 使用下边代码新建项目和app应用 ```python # Set up a new project with a single application django-admin startproject general_backend . # Note the trailing '.' character cd general_backend django-admin startapp manufacture_analysis ``` 6. 配置和迁移数据库 - 安装数据库依赖包 ```python pip install pymysql ``` - 配置项目使用pymysql:在项目的settings.py文件所在目录的__init__.py文件中配置如下代码: ```python import pymysql pymysql.install_as_MySQLdb() ``` - 在settings.py文件中的数据库中配置外部数据库,如果不适用默认的sqlite数据库的话: ```python DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": "datapmc", "USER": "zml", "PASSWORD": "123456", "HOST": "10.64.244.188", "PORT": "3306", "OPTIONS": { "init_command": 'SET sql_mode="STRICT_TRANS_TABLES"', "charset": "utf8mb4", }, } } ``` - 迁移数据库并创建管理员账号 ```python python manage.py migrate python manage.py createsuperuser --username admin --email admin@example.com ``` - 如果无法登录admin后台可以尝试使用下面命令修改密码: ```python python manage.py changepassword [要修改的用户名] 例如: python manage.py changepassword admin (Sgmw5050) ``` - 生成requirements.txt文件的命令 ```python pip freeze > requirements.txt ``` 7. 常用Django操作迁移命令 ```python 1、查看迁移 python manage.py showmigrations 2、重置迁移migration文件 python manage.py migrate --fake [app名] zero 3、然后就可以删除这个app下的migrations模块中 除 init.py 之外的所有文件,之后,执行 python manage.py makemigrations 程序会再次为这个app 生成 0001_initial.py 之类的文件; 4、最重要的一步来了, 执行 python manage.py migrate --fake-inital #–fake-inital 会在数据库中的 migrations表中记录当前这个app 执行到 0001_initial.py ,但是它不会真的执行该文件中的 代码。 #这样就做到了,既不对现有的数据库改动,而又可以重置 migraion 文件,再也不用在 migration模块中看到一推文件了。 ``` 8. 根据已有的数据库建立表模型 ```python # 扫描默认数据库 python manage.py inspectdb # 扫描某个表 python manage.py inspectdb [table_name] # 扫描并保存结果到某个app python manage.py startapp app1 python manage.py inspectdb > app1/models.py # 扫描某个非 default 数据库(注意非数据库名,是在settings中的数据库配置字典的key) python manage.py inspectdb --database=db1 inspectdb 读取在settings中配置的数据库连接,分析数据库中的所有表生成models结构。分析中有几个原则: #无法分析的字段,默认为TextField #python保留字字段,例如 for, pass ,django创建的字段属性自动加上_filed(for_field,pass_field),并自动设置 db_column=for #对于mysql,postgresql,sqlite, django 检测每个表的主键,如果没有会自动添加 id(primary_key=True)。其他数据库需要自己修改 #每个表都将生成一个model类。对于一些ManyToManyField,需要手动修改 #django 不会读取和设置数据库 default默认值,需要手动修改 #非主键自增字段,django不能自动识别,需要自己添加(AutoField=True) #inspectdb 扫描的model类,如果修改结构不会自动同步更新到数据库。需要修改或删除 managed = False python manage.py inspectdb --database databasename tablename1 tablename2 > 路径/new_models.py #–database 数据库名 : 要转换的数据库配置别名 #–database 对应settings.py文件里的DATABASES数据库配置. #当项目配置了两个以上的数据库才要通过 --database,不加–database参数默认就是指向default的数据库。 ``` 参考:如何将 Django 与旧有的数据库集成[https://docs.djangoproject.com/zh-hans/5.0/howto/legacy-databases/] ### 软件架构 软件架构说明 ### 安装教程 1. xxxx11 2. xxxx 3. xxxx ### 使用说明 1. xxxx 2. xxxx 3. xxxx ### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) #### 报错解决办法 1. 使用inspectdb命令从已有数据库生成模型models时,出现针对Mysql 5.7的不支持报错,可以将G:\drf_backend\venv\Lib\site-packages\django\db\backends\base\base.py的239行,对数据库版本检查的代码注释掉; ![alt text](image/针对mysql5.7运行inspectdb命令报错的解决办法.png)