不要犯同样的错误,尝试犯新的错误.
1. 后端环境
作者开发环境是 Mac(非M处理器)+PyCharm专业版.
大家按照以下配置检查环境:
- python版本: Python 3.10.4(
python3 --version), 一般来说3.x都是可以的. - 其他依赖:
asgiref==3.5.1
async-timeout==4.0.2
certifi==2022.5.18.1
cffi==1.15.0
charset-normalizer==2.0.12
cryptography==37.0.2
Deprecated==1.2.13
Django==4.0.4
django-filter==21.1
django-redis==5.2.0
djangorestframework==3.13.1
djangorestframework-camel-case==1.3.0
idna==3.3
mysqlclient==2.1.0
packaging==21.3
pycparser==2.21
PyMySQL==1.0.2
pyparsing==3.0.9
pytz==2022.1
qiniu==7.7.1
redis==4.3.3
requests==2.27.1
sqlparse==0.4.2
urllib3==1.26.9
wrapt==1.14.1
大家可以在根目录新建一个 requirements.txt 文件, 将上面的依赖复制到文件内, 然后调用
pip install -r requirements.txt安装.
2. settings配置
大家创建完项目后(建议使用pycharm创建), 这里我们要解决如下几个问题:
- 创建业务app(django中的术语, 一个项目包含若干application).
- django中的基本配置, 如数据库, 路由.
- django中restframework的基本配置.
2.1 创建业务app
直接通过django命令来完成.
# 构建一个叫api的application, 顾名思义是用来为前端提供api的
python manage.py startapp api
2.2 配置数据库, 路由等
在backend.settings中进行如下配置:
# 将刚才创建的app添加到安装列表
INSTALLED_APPS = [
'api.apps.ApiConfig',
...
]
# 数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 我这里用的mysql
'NAME': 'fisher', # 实际创建的数据库名称
'HOST': '127.0.0.1',
'USER': 'xxx',
'PASSWORD': 'xxxxx' # 用户名和密码请根据实际修改
}
}
# 配置单词本保存路径, 大家根据实际路径配置
MEDIA_ROOT = '/Users/qiangchen/Desktop/fisher/upload/'
MEDIA_URL = 'upload/' # 用来构建下载路径
# restframework 配置
REST_FRAMEWORK = {
'UNAUTHENTICATED_USER': None,
'UNAUTHENTICATED_TOKEN': None,
'DEFAULT_PAGINATION_CLASS': 'api.common.pagination.Pagination',
'PAGE_SIZE': 10, # 默认每页数据量
'DEFAULT_RENDERER_CLASSES': ( # 后端一般使用下划线命名, 前端使用驼峰, 这里用这个插件处理下
'djangorestframework_camel_case.render.CamelCaseJSONRenderer',
'djangorestframework_camel_case.render.CamelCaseBrowsableAPIRenderer',
),
'DEFAULT_PARSER_CLASSES': (
'djangorestframework_camel_case.parser.CamelCaseFormParser',
'djangorestframework_camel_case.parser.CamelCaseMultiPartParser',
'djangorestframework_camel_case.parser.CamelCaseJSONParser'
)
}
其他配置, 按照默认的来就行了, 下面将进行第一次数据库构建, 主要是为了创建一些django需要的默认表:
python manage.py makemigrations api # 构建迁移文件
python manage.py migrate # 执行迁移
后面我们将使用"数据库迁移或"迁移"来表示上面两个步骤.
3. 划分开发环境和生产环境
如果只是为了本地练手, 这一步不是必须的, 但是如果为了以后部署上线, 区分环境是必要的.
这里通过添加settings_product.py来配置生产环境的设置:
# settings_product.py
from backend.settings import *
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'fisher',
'HOST': '127.0.0.1',
'USER': 'xxxx',
'PASSWORD': 'xxxxxx'
}
}
接下来, 需要我们通过一个枚举来区分和切换环境, 在manage.py中添加如下代码:
# manage.py
...
class Environment(Enum):
LOCAL = 'backend.settings_base'
PRODUCT = 'backend.settings_product'
environment = Environment.LOCAL # 当前是本地环境
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', environment.value)
...
...
4. 运行
在运行之前请大家检查一下:
- mysql是否已经启动.
- 本地数据库是否已经创建.
如果都已确认, 使用django命令来启动服务(或者直接点击右上角运行按钮):
python manage.py runserver
代码已开源: github.com/oooooocean/…, 如果觉得有帮助, 请给个Star, 鼓励下作者.
如果大家在创建数据库, 启动服务上有任何问题或者报错, 可以加群讨论:
