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 = [
    
]
posted @ 2019-07-16 20:21  希希大队长  阅读(215)  评论(1编辑  收藏  举报