文章目录

  • 1 虚拟环境创建Django项目:ImportError: cannot import name 'Iterator' from 'collections' (D:\python3.10.0\lib\collections\__init__.py)
  • 2 CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
  • 3 ERRORS: ?: (admin.E403) A 'django.template.backends.django.DjangoTemplates' instance must be configured in TEMPLATES in order to use the admin application.
  • 4 django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
  • 5 RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
  • 6 redis.exceptions.AuthenticationError: Authentication required. / django_redis.exceptions.ConnectionInterrupted: Redis AuthenticationError: Authentication required.
  • 7 django.core.exceptions.ImproperlyConfigured: The included URLconf '<module 'apps.register.urls' from ... does not appear to have any patterns in it. If you see the 'urlpatterns' variable with valid patterns in the file then the issue is probably caused by a circular import.
  • 8 django.core.exceptions.ImproperlyConfigured: Cannot import 'register'. Check that 'apps.register.apps.RegisterConfig.name' is correct.
  • 9 RuntimeError: You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to 127.0.0.1:9999/user/smsVerificationCode/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.[14/Nov/2022 18:33:34] "POST /user/smsVerificationCode HTTP/1.1" 500 74611
  • 10 TypeError: __init__() missing 1 required positional argument: 'on_delete




1 虚拟环境创建Django项目:ImportError: cannot import name ‘Iterator’ from ‘collections’ (D:\python3.10.0\lib\collections_init_.py)

django multiprocessing创建的process会自动被关闭_django


django multiprocessing创建的process会自动被关闭_py_02

报错原因:
Python3.10版本中,库collections停用了,所以在Python3.10版本环境下执行django-admin startproject 项目名命令创建Django项目会报错。

解决:
方法一:创建虚拟环境时指定python版本

virtualenv -p 指定版本python.exe的安装路径 虚拟环境名
virtualenv -p D:\python3.9.7\python.exe test01

django multiprocessing创建的process会自动被关闭_python_03

方法二:更改系统环境变量配置中默认优先使用的python版本

前提已经安装好其他版本的Python

django multiprocessing创建的process会自动被关闭_数据库_04


django multiprocessing创建的process会自动被关闭_python_05


django multiprocessing创建的process会自动被关闭_py_06


django multiprocessing创建的process会自动被关闭_python_07


django multiprocessing创建的process会自动被关闭_数据库_08


django multiprocessing创建的process会自动被关闭_py_09


django multiprocessing创建的process会自动被关闭_python_10


2 CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.

原因:
当全局配置文件中的DEBUG配置项设置为False时候,必须在ALLOWED_HOSTS配置项中配置允许哪些IP地址访问我们的django后台站点。

解决:
在全局配置文件 setting.py 中ALLOWED_HOSTS配置项中添加允许访问我们的django后台站点的IP地址

DEBUG = False

ALLOWED_HOSTS = [
    'localhost',
    '127.0.0.1',
]

# 运行所有的IP地址访问我们的django后台站点
# ALLOWED_HOSTS = ['*']

3 ERRORS: ?: (admin.E403) A ‘django.template.backends.django.DjangoTemplates’ instance must be configured in TEMPLATES in order to use the admin application.

解决:
只需将django的默认模板引擎配置添加在模板引擎的配置项中的最后即可(注意模板文件夹的路径)

TEMPLATES = [
    # Jinja2模板引擎配置
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',  # 配置Jinja2模板引擎
        # BASE_DIR 指向项目目录
        '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',
            ],
            # 补充 Jinja2 模板引擎环境
            # 'environment': '项目目录.utils.jinja2_env.jinja2_environment',
            # 'environment': 'test_pro01.utils.jinja2_env.jinja2_environment',
        },
    },
    # Django 默认模板引擎
    {
        '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',
            ],
        },
    },
]

4 django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.

报错原因:
1.项目的虚拟环境中缺少MySQL需要的驱动程序MySQLdb,在python2.x中使用的MySQL驱动程序为MySQLdb,而在python3.x中需要使用PyMySQL。
2.也可能是由于django中默认的MySQL驱动程序为MySQLdb,我们没有将其修改为PyMySQL。

解决:
安装PyMySQL:

pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple

使用 pymysql 替代默认的MySQL数据库驱动程序 MySQLdb,在项目目录下的__init__.py 文件中添加如下代码:

from pymysql import install_as_MySQLdb


install_as_MySQLdb()

django multiprocessing创建的process会自动被关闭_django_11


5 RuntimeError: ‘cryptography’ package is required for sha256_password or caching_sha2_password auth methods

解决办法1:重启mysql服务

net stop mysql
net start mysql

django multiprocessing创建的process会自动被关闭_数据库_12


解决方法2:安装cryptography包

pip install cryptography -i https://pypi.tuna.tsinghua.edu.cn/simple

6 redis.exceptions.AuthenticationError: Authentication required. / django_redis.exceptions.ConnectionInterrupted: Redis AuthenticationError: Authentication required.

原因:
Django项目在配置redis(设置了访问密码)数据库时,没有配置访问redis数据库的密码。

解决:
在CACHE配置中的OPTIONS中添加访问redis数据库的密码。

"PASSWORD": "123123",  # 访问redis数据库的密码
# 配置redis数据库
CACHES = {
    "default": {  # 默认情况下使用redis中的哪个数据库
        # 使用redis作为缓存
        "BACKEND": "django_redis.cache.RedisCache",
        # redis 数据库所在的主机地址 端口号 选择第几个数据库
        # 默认情况下使用 0 号库
        "LOCATION": "redis://192.168.93.130:6379/0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PASSWORD": "123123",  # 访问redis数据库的密码
        }
    }
}

7 django.core.exceptions.ImproperlyConfigured: The included URLconf '<module ‘apps.register.urls’ from … does not appear to have any patterns in it. If you see the ‘urlpatterns’ variable with valid patterns in the file then the issue is probably caused by a circular import.

原因:
在Django项目的总路由配置文件中配置了项目子应用的子路由,但是在子应用的路由配置文件中没有路由配置(子应用路由配置文件内容为空).

解决:
在子应用的子路由配置文件中添加urlpatterns配置即可:

from django.urls import path, include

urlpatterns = [
    
]

8 django.core.exceptions.ImproperlyConfigured: Cannot import ‘register’. Check that ‘apps.register.apps.RegisterConfig.name’ is correct.

原因:
导包的路径书写错误,django项目找不到对应的文件

解决:
将导包时候的路径填写正确即可

在项目的全局配置文件中打印查看项目的导包路径:

import sys


print(sys.path)  # 查看项目当前的导包路径
print(BASE_DIR)

django multiprocessing创建的process会自动被关闭_django_13


9 RuntimeError: You called this URL via POST, but the URL doesn’t end in a slash and you have APPEND_SLASH set. Django can’t redirect to the slash URL while maintaining POST data. Change your form to point to 127.0.0.1:9999/user/smsVerificationCode/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.[14/Nov/2022 18:33:34] “POST /user/smsVerificationCode HTTP/1.1” 500 74611

原因:
通过POST调用了这个URL,URL没有以斜杠结尾,即请求的URL没有以 / 结尾

解决:
1.在django项目的项目设置 settings.py 文件中设置:

# 取消URL一定以斜杠结尾
APPEND_SLASH=False

2.在请求的URL后添加 /

10 TypeError: init() missing 1 required positional argument: 'on_delete

报错:
TypeError: __init__() missing 1 required positional argument: 'on_delete' 原因:
django升级到2.0之后,表与表之间关联的时候必须写"on_delete"参数,否则会报错 使用的是Django2.0以上的版本,在添加实体外键的时候,2.0以前的版本是默认级联删除的,在2.0以上的版本要加上:
models.ForeignKey(“表名”, on_delete=models.CASCADE) 之后再创建迁移文件,执行命令行就不会报错了

django multiprocessing创建的process会自动被关闭_py_14


子应用没有进行注册,生成迁移文件会报错:


django multiprocessing创建的process会自动被关闭_redis_15
























django multiprocessing创建的process会自动被关闭_python_16


django multiprocessing创建的process会自动被关闭_redis_17


django multiprocessing创建的process会自动被关闭_python_18


django multiprocessing创建的process会自动被关闭_redis_19

ModuleNotFoundError: No module named 'users'
ImproperlyConfigured(django.core.exceptions.ImproperlyConfigured: 
Cannot import 'users'. 
Check that 'meiduo_mall.apps.users.apps.UsersConfig.name' is correct.

子应用没有创建在项目根目录下

Forbidden (Origin checking failed - http://localhost:8080 does not match any trusted origins.): /user/register/

跨域 注释csrf