项目全文索引
创建项目
接下来的部分有点坑要注意:
- Gerapy的django版本是1.x,后面前后端分离的系统是3.x所以不兼容,有能力的童鞋自行修改对应源码即可,如果懒得修改的话直接弄2台机器吧。
- 这个代码编写和部署坑比较多,我把我遇见的都会标记下来。
- 这个最终需要的结果是一个访问的数据API接口和一个后台管理系统。
命令行执行
django-admin.exe startproject NewsManagecd NewsManagepython manage.py startapp Article
安装依赖包
注意几点
- DjangoUeditor这个需要从github上下载覆盖否则会报错。
下载地址 - djangorestframework==3.9.2,使用低版本会报错。
- 还有很多细节地方需要调整源码,由于太多记不住可以跟帖提问。
settings.py
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','Article','rest_framework',# 前后端分离框架'crispy_forms',# 展示表单'django_filters',# 查询'rest_framework.authtoken',# 认证'DjangoUeditor',# 富文本编辑器'rest_framework_swagger',]MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',]ROOT_URLCONF = 'NewsManage.urls'TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR,'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],'libraries': {# Adding this section should work around the issue.'staticfiles': 'django.templatetags.static',}},},]WSGI_APPLICATION = 'NewsManage.wsgi.application'# Database# https://docs.djangoproject.com/en/3.0/ref/settings/#databases# 连接mysql数据库DATABASES = {'default': {'NAME': '你的数据库',# 数据库名'ENGINE': 'django.db.backends.mysql','USER': '你的用户名',# 用户名'PASSWORD': '你的密码',# 密码'HOST': '127.0.0.1',# 主机IP'PORT': '3306',# 端口'useSSL': 'false',}}# Password validation# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validatorsAUTH_PASSWORD_VALIDATORS = [{'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',},{'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',},{'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',},{'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',},]# Internationalization# https://docs.djangoproject.com/en/3.0/topics/i18n/# 时间设置LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/Shanghai'USE_I18N = TrueUSE_L10N = TrueUSE_TZ = False# 默认是True, 时间是UTC时间,由于我们要用到本地时间,所以设置成False# Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/3.0/howto/static-files/STATIC_URL = '/static/'STATIC_ROOT = os.path.join(BASE_DIR, 'static').replace('', '/')STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)# print(BASE_DIR)# print(STATICFILES_DIRS)# print()MEDIA_URL = '/media/'MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')MEDIAFILES_DIRS = (os.path.join(BASE_DIR, 'media'),)# print(MEDIA_ROOT)# print(MEDIAFILES_DIRS)# print()# 初始化配置# token rest framework 配置实现REST_FRAMEWORK = {'DEFAULT_PERMISSION_CLASSES': (# 'rest_framework.permissions.IsAuthenticated',# 必须有),'DEFAULT_AUTHENTICATION_CLASSES': (# 'rest_framework.authentication.BasicAuthentication',# 'rest_framework.authentication.TokenAuthentication',#系统已有的# 'article.auth.MyTokenAuthentication',# 自定义的带过期的认证),'DEFAULT_RENDERER_CLASSES': ('rest_framework.renderers.JSONRenderer',),'DEFAULT_PARSER_CLASSES': ('rest_framework.parsers.JSONParser',),'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',# 新版drf schema_class默认用的是rest_framework.schemas.openapi.AutoSchema}
配置pymysql
# 在setting.py 同级目录下的init文件导入import pymysqlpymysql.version_info = (1, 3, 13, "final", 0) # 这个一定要有否则会报错pymysql.install_as_MySQLdb()
目录结构如下