Django项目开发过程中出现的错误和解决方法集锦(持续更新)

Django项目开发过程中出现的错误和解决方法集锦(持续更新)_第1张图片

关于Django进阶系统的技术文章,后续将第一时间在微信公众号:CTO Plus发文,敬请关注。

Django项目开发过程中出现的错误和解决方法集锦(持续更新)_第2张图片

 

django.core.exceptions.ImproperlyConfigured: Cannot import 'app_name'. Check that 'packages.app_name.apps.MakoProConfig.name' is correct.

解决方法:

sys.path.insert(0, os.path.join(BASE_DIR, 'packages'))

解决自定义packages文件夹 下面放置app的问题

RuntimeError: Model class ****doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

Django APP默认应用是直接在项目的根目录下面;但此处应用都放在了package里面,虽然有在 settings.py 文件中进行导包,但Django识别放在apps的应用,但还是无法注册。

解决方法:

注意确认应用下面的apps.py,name值的路径是正确的,如此处的packages.drf_pro

class DrfProConfig(AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    # Django APP默认是直接在项目的根目录下面,此处换在了packages目录下
    name = "packages.drf_pro"

要用相对路径,而不能用绝对路径

django.core.exceptions.ImproperlyConfigured: 'djongo' isn't an available database

django.core.exceptions.ImproperlyConfigured: 'djongo' isn't an available database backend or couldn't be imported. Check the above exception. To use one of the built-in backends, use 'django.db.backends.XXX', where XXX is one of:

    'mysql', 'oracle', 'postgresql', 'sqlite3'

解决方法:

# https://github.com/doableware/djongo/issues/171

# pip install djongo==1.3.6

# pip install pymongo==3.12.1

# pip install django==4.1.7

django.core.exceptions.ImproperlyConfigured: Requested settings DJANGO_SETTINGS_MODULE or call settings.configure()

django.core.exceptions.ImproperlyConfigured: Requested settings, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

解决方法:

请求的设置调试,但未配置设置。在访问设置之前,必须定义环境变量DJANGO_SETTINGS_MODULE或调用SETTINGS.configure()。

如果是启动服务方式报错

所以定义DJANGO_SETTINGS_MODULE解决此BUG:

配置DJANGO_SETTINGS_MODULE

Django项目开发过程中出现的错误和解决方法集锦(持续更新)_第3张图片

PYTHONUNBUFFERED=1;DJANGO_SETTINGS_MODULE=your_project.settings

后面的值bay.settings 改为的项目名+.settings

如果是run manage task(Ctrl+Alt+R)方式出的错

Django项目开发过程中出现的错误和解决方法集锦(持续更新)_第4张图片

Django项目开发过程中出现的错误和解决方法集锦(持续更新)_第5张图片

django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS

django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

需要在 子app调试的文件头部 显式的指明配置文件是哪个文件

setdefault 的value 设置自己项目配置文件的路径

import os

import django

os.environ.setdefault('DJANGO_SETTING_MODULE', 'language_characteristic.settings')

django.setup()

django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFIG

django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFIG, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

可以把当前的setting文件的debug设置为True 即可跳过此项配置

django.setup()要放在修改配置的后面

import os

import django

os.environ.setdefault('DJANGO_SETTING_MODULE', 'language_characteristic.settings')

from django.conf import settings

settings.configure(DEBUG=True)

django.setup()

单独启动子app可能会导致django model找不到app

model里面Meta选项

app_label

app_label这个选项只在一种情况下使用,就是模型类不在默认的应用程序包下的models.py文件中,这时候需要指定这个模型类是那个应用程序的。

django.core.exceptions.ImproperlyConfigured: app_dirs must not be set when loaders is defined.

这个错误通常是由于在Django的设置文件中同时设置了APP_DIRS和LOADERS导致的。APP_DIRS设置指定了Django应该在哪些目录中查找应用程序,而LOADERS设置指定了Django应该使用哪些加载器来加载模板。

解决方法:将APP_DIRS设置从设置文件中删除或将LOADERS设置从设置文件中删除即可。

mongoengine.connection.ConnectionFailure: You have not defined a default connection

这个错误通常是由于在使用MongoEngine时没有定义默认连接导致的。MongoEngine需要一个默认连接来与MongoDB数据库进行通信。

解决方法:在Django的设置文件中定义一个默认连接,例如:

from mongoengine import connect

connect('mydb')

pymongo.errors.InvalidName: database names cannot contain the character '.'

这个错误通常是由于在MongoDB数据库名称中包含了不允许的字符导致的。MongoDB数据库名称中不允许包含点号。

解决方法:更改MongoDB数据库名称,不要包含点号。如果必须使用点号,可以考虑使用转义字符来解决这个问题。例如:

from pymongo import MongoClient

client = MongoClient()

db = client['mydb.name.with.dot']

ValidationError (UserInfo:None) (Invalid email address: python.org.com: ['addr'])

这个错误通常表示在Django模型中的EmailField中输入了无效的电子邮件地址。

解决方法:请检查使用的电子邮件地址是否合法。电子邮件地址应该是符合RFC 5322标准的格式。

ModuleNotFoundError: No module named 'haystackdjango4_characteristic'

这个错误通常是因为在Python中无法找到所需的包或模块。

解决方法:请检查是否正确安装了包或模块。确保在的Python环境中安装了所需的包,并使用正确的名称在代码中引用。特别注意大小写是否正确。

redis.exceptions.RedisError: Hiredis is not installed

这个错误通常表示需要使用Redis缓存时,出现了无法找到Hiredis的情况。

解决方法:安装Hiredis。Hiredis是一个高效的Redis协议解析器和格式化工具库。在终端执行以下命令即可安装:

pip install hiredis

如果需要指定版本,则通过下面的指令安装即可

pip install hiredis==2.2.2

如果使用的是Mac OS X,请尝试运行以下命令:

brew install libhiredis-dev

安装完成后,请重新启动的Django Web应用程序。

ImportError: cannot import name 'QUERY_TERMS'

这个错误通常是因为尝试在Django项目中导入了不存在的模块名或函数名。

解决方法:请检查代码,确保所有的模块名和函数名都正确。如果使用的是第三方库,请确保已经正确安装并且已经添加到的Python环境中。如果问题仍然存在,请检查的导入语句,确保正确导入了所需的模块或函数。

Django2版本调整成Django==1.11.23就可以了

django.db.utils.OperationalError: 1366

django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xE4\\xB8\\xBB\\xE6\\x9C\\xBA...' for column 'property_display' at row 1")

这个错误通常是在使用Django ORM时由于MySQL数据库编码不兼容导致的。常见的编码不兼容问题是MySQL使用默认的“utf8”编码而Django使用“utf8mb4”编码。

解决方法:在Django的数据库设置中修改字符集编码为“utf8mb4”也可以在MySQL的配置文件中指定使用该编码。例如:

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.mysql',

        'NAME': 'mydatabase',

        'USER': 'mydatabaseuser',

        'PASSWORD': 'mypassword',

        'HOST': 'localhost',

        'PORT': '3306',

        'OPTIONS': {

            'charset': 'utf8mb4',

        },

    }

}

django.urls.exceptions.NoReverseMatch: 'xxx' is not a registered namespace

这个错误通常是由于尝试在Django模板中反向解析一个不存在的URL命名空间。

版本:django4.2

在定义get_absolute_url方法时,使用reverse反向解析视图的URL

Django项目开发过程中出现的错误和解决方法集锦(持续更新)_第6张图片

下面的使用方法都会造成is not a registered namespace的错误

第一个url使用了APP的名称mvt_design,此方法会造成错误。

第二个url使用了url_path中定义的name,此方法会造成错误。

解决方案:

请检查的代码并确保使用的URL名称和命名空间是正确注册和命名的。如果需要,可以检查命名空间是否在Django应用程序的URL配置中正确地定义。

如果对应的app下的urls已经定义了app_name,则直接使用该值。如果未定义,则在对应的app的urls下加上app_name=‘xxx’

TypeError: quote_from_bytes() expected bytes

版本:django4.2

在models中定义了get_absolute_url时使用了return redirect(reverse())则会引发TypeError: quote_from_bytes()错误

def get_absolute_url(self):
    url = reverse('tasks:index_c_v21')

    return redirect(url)

get_absolute_url要返回重定向到的url,reverse返回的是一个url

所以正确写法如下

def get_absolute_url(self):
    url = reverse('tasks:index_c_v21')

    return url

类似的如果定义get_success_url也应该直接使用reverse

class SomeView(generic.CreateView):

    #...

    def get_success_url(self):

        return HttpResponseRedirect(reverse('index'))

HttpResponseRedirect的快捷方式是redirect(“视图名称”) 它返回一个HttpResponse(HTML)

get_success_url不返回HttpResponseRedirect,而是返回要重定向到的url。所以只需返回reverse('index')

所以直接写成如下即可

def get_success_url(self):

    return reverse('index')


更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。

关于公众号的描述访问如下链接


关于Articulate“做一个知识和技术的搬运工。做一个终身学习的爱好者。做一个有深度和广度的技术圈。”一直以来都想把专业领域的技https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q

推荐阅读:

DRF实战总结:DRF特点、序列化与RESTful API规范_SteveRocket的博客-CSDN博客

DRF实战总结:基于函数的视图API以及自定义序列化器(附源码)_drf 自定义序列化器_SteveRocket的博客-CSDN博客Django进阶:.gitignore文件建议忽略文件清单及是否需要忽略数据库迁移文件_SteveRocket的博客-CSDN博客DRF实战总结:基于函数的视图API以及自定义序列化器(附源码)_drf 自定义序列化器_SteveRocket的博客-CSDN博客

Django单元测试:PGSQL数据库配置、常用测试工具、DB冲突方案和代码覆盖率实战_SteveRocket的博客-CSDN博客

Django开发总结:Django MVT与MVC设计模式,请求过程与代码示例(附源码)_SteveRocket的博客-CSDN博客 Django开发总结:官方推荐编码规范_django 开发规范_SteveRocket的博客-CSDN博客

你可能感兴趣的:(#,Django进阶,django,python,后端)