9、后端home应用的创建
home应用的创建
注册drf、弃用jdango的csrf
# dev.py
INSTALLED_APPS = [
# ...
'rest_framework',
]
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',
'corsheaders.middleware.CorsMiddleware',
]
创建 home 应用
"""
1.前往apps目录下创建app:cd luffyapi/apps
2.创建app:python ../../manage.py startapp home
# ../表示上层目录 由于apps目录的上两层目录才有manage.py,so....
"""
配置 apps 到环境变量并注册home应用
# dev.py
import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(os.path.join(BASE_DIR, 'apps'))
# 注:不添加环境变量,注册 应用 很麻烦,会出现 应用 找不到
INSTALLED_APPS = [
# ...
'home'
]
在home内部相互导包必须用 . 语法
如在home/urls.py中到home/views.py
- from . import views
在home/Serializer.py中导入models
- from . import models
如出现以下错误:
RuntimeError: Model class luffyapi.apps.home.models.Banner doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
可能有以下几点原因:
1、django版本较高,项目重构后,在settings里注册app时需要按完整语法注册
2、在app内部导包没有按照点语法导包,如:
- 查找所有app内部文件,APP内部导包全改为点语法即可
3、主路由分发include出错,以下为正确示例:
- 在以上示例中,你需要确保你的apps文件夹在配置文件中已经加入环境变量
此外django2以上版本与mysql 5.5及以下不兼容
注册子路由
# 主路由:urls.py
from django.urls import include
urlpatterns = [
# ...
path('home/', include('home.urls')),
]
# 子路由:home/urls.py
from django.urls import path, re_path
urlpatterns = [
]
程序猿,要对自己狠一点!