项目说明 1.项目采用前后端分离的方式; 2.前端采用 vue3 + axios; 3.后端采用 django3.1.10 + djangorestframework;
创建项目 1.进入指定目录,打开终端命令行工具,执行以下命令创建 django 项目:
1 2 3 4 5 6 7 8 ┌──(leazhi㉿localhost)-[~] └─$ cd ~/Desktop/python3/Django/项目/small ┌──(leazhi㉿localhost)-[~/…/python3/Django/项目/small] └─$ django-admin startproject haoke
2.项目创建完成后,使用 linux 下的命令 tree 查看下创建的 django 目录结构:
1 2 3 4 5 6 7 8 9 10 11 12 ┌──(leazhi㉿localhost)-[~/…/python3/Django/项目/small] └─$ tree haoke haoke ├── haoke │ ├── asgi.py │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── manage.py 2 directories, 6 files
注意:
项目的根路径并非 small(该目录只是一个存放 django 项目的目录), 而是我们创建的项目名称目录(即 haoke ) ,且同时会在根目录下创建同名的子目录;
项目根目录下会创建 manage.py 文件, 该文件是 django 项目启动的入口文件;
项目根目录下会创建 haoke 子目录, 该目录是 django 项目的配置文件目录;
环境配置 生产环境和开发环境的配置 1.在项目根目录下的子目录 haoke 目录下创建 settings 包,然后在该包下创建 2 个文件,分别为 dev.py(开发环境配置文件) 和 pro.py(生产环境配置文件) , 创建后的项目目录结构为:
下面及后期的开发环境如果没有特殊说明,则全部使用 dev.py 的配置进行开发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ┌──(leazhi㉿localhost)-[~/…/python3/Django/项目/small] └─$ tree haoke haoke ├── haoke │ ├── asgi.py │ ├── __init__.py │ ├── settings │ │ ├── dev.py │ │ ├── __init__.py │ │ └── pro.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── manage.py 3 directories, 9 files
2.将项目根目录下的子目录 haoke 目录下settings.py 的内容复制到创建的 settings 包下的 dev.py 文件里:
1 2 ┌──(leazhi㉿localhost)-[~/…/python3/Django/项目/small] └─$ cat haoke/haoke/settings.py > haoke/haoke/settings/dev.py
3.编辑项目根目录下的 manage.py 文件,将其修改为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 """Django's command-line utility for administrative tasks.""" import osimport sysdef main (): """Run administrative tasks.""" os.environ.setdefault('DJANGO_SETTINGS_MODULE' , 'haoke.settings.dev' ) try : from django.core.management import execute_from_command_line except ImportError as exc: raise ImportError( "Couldn't import Django. Are you sure it's installed and " "available on your PYTHONPATH environment variable? Did you " "forget to activate a virtual environment?" ) from exc execute_from_command_line(sys.argv) if __name__ == '__main__' : main()
配置 ALLOWED_HOSTS: 1.编辑创建的 dev.py 文件,找到 ALLOWED_HOSTS = [...]
的配置,将其修改为:
1 2 3 4 5 6 7 ... ALLOWED_HOSTS = ['*' ] ...
注册 rest_framework: 1.编辑创建的 dev.py 文件, 找到 INSTALLED_APPS
选项, 添加 rest_framework
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... INSTALLED_APPS = [ 'django.contrib.admin' , 'django.contrib.auth' , 'django.contrib.contenttypes' , 'django.contrib.sessions' , 'django.contrib.messages' , 'django.contrib.staticfiles' , 'rest_framework' , ] ...
配置与 mysql 交互 1.编辑创建的 dev.py 文件,找到 DATABASES = [...]
的配置,将其修改为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... DATABASES = { 'default' : { 'ENGINE' : 'django.db.backends.mysql' , 'NAME' : 'small' , 'HOST' : '127.0.0.1' , 'PORT' : '3306' , 'USER' : 'root' , 'PASSWORD' : 'chekir0214' } } ...
2.登录 mysql ,创建数据库 small:
1 2 3 4 5 6 7 8 9 10 11 12 leazhi@ubuntuhome:~$ mysql -uroot -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 800 Server version: 10.10.2-MariaDB-log MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help . Type '\c' to clear the current input statement. (root@localhost (none) 02:00:)>create database if not exists small charset=utf8; Query OK, 1 row affected (0.006 sec)
配置与 redis 交互 1.编辑创建的 dev.py 文件,找到 DATABASES = [...]
的配置,在其下面添加 redis 的相关配置,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ... DATABASES = { 'default' : { 'ENGINE' : 'django.db.backends.mysql' , 'NAME' : 'small' , 'HOST' : '127.0.0.1' , 'PORT' : '3306' , 'USER' : 'root' , 'PASSWORD' : 'chekir0214' } } CACHES = { 'default' : { 'BACKEND' : 'django_redis.cache.RedisCache' , 'LOCATION' : 'redis://127.0.0.1:22652/9' , 'OPTIONS' : { 'CLIENT_CLASS' :'django_redis.client.DefaultClient' , "PASSWORD" : "Zmi2hU4hGkdroBl7wWm/DszVaWWqrgNuWwD2tmHO" , } }, 'code' : { 'BACKEND' : 'django_redis.cache.RedisCache' , 'LOCATION' : 'redis://127.0.0.1:22652/10' , 'OPTIONS' : { 'CLIENT_CLASS' :'django_redis.client.DefaultClient' , "PASSWORD" : "Zmi2hU4hGkdroBl7wWm/DszVaWWqrgNuWwD2tmHO" , } }, } ...
配置语言: 1.默认, django 是使用的英文环境.作为一个中文用户, 肯定希望使用中文.
2.编辑创建的 dev.py 文件, 找到 LANGUAGE_CODE
选项, 将其值改为 zh-hans:
1 2 3 4 5 6 7 ... LANGUAGE_CODE = 'zh-hans' ...
配置时区: 1.默认, django 是使用的 UTC 时区.作为一个中文用户, 肯定希望使用北京时间.
2.编辑创建的 dev.py 文件, 找到 TIME_ZONE
选项, 将其值改为 Asia/Shanghai
:
1 2 3 4 5 6 7 ... TIME_ZONE = 'Asia/Shanghai' ...
配置 logs 1.编辑创建的 dev.py 文件,在文件的最后添加如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 from pathlib import Pathimport os ... LOGGING = { 'version' : 1 , 'disable_existing_loggers' : False , 'formatters' : { 'verbose' : { 'format' : '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s' }, 'simple' : { 'format' : '%(levelname)s %(module)s %(lineno)d %(message)s' }, }, 'filters' : { 'require_debug_true' : { '()' : 'django.utils.log.RequireDebugTrue' , }, }, 'handlers' : { 'console' : { 'level' : 'DEBUG' , 'filters' : ['require_debug_true' ], 'class' : 'logging.StreamHandler' , 'formatter' : 'simple' }, 'file' : { 'level' : 'INFO' , 'class' : 'logging.handlers.RotatingFileHandler' , 'filename' : os.path.join(BASE_DIR, 'logs/haoke.log' ), 'maxBytes' : 300 * 1024 * 1024 , 'backupCount' : 10 , 'formatter' : 'verbose' }, }, 'loggers' : { 'django' : { 'handlers' : ['console' , 'file' ], 'propagate' : True , 'level' : 'INFO' , }, } }
2.在项目子目录 haoke(非根目录)下创建 logs文件夹,用于存放日志文件:
1 2 ┌──(leazhi㉿localhost)-[~/…/python3/Django/项目/small] └─$ mkdir haoke/haoke/logs