关于Django进阶系统的技术文章,后续将第一时间在微信公众号:CTO Plus发文,敬请关注。
解决方法:
sys.path.insert(0, os.path.join(BASE_DIR, 'packages'))
解决自定义packages文件夹 下面放置app的问题
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 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, 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
PYTHONUNBUFFERED=1;DJANGO_SETTINGS_MODULE=your_project.settings
后面的值bay.settings 改为的项目名+.settings
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.
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, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
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()
model里面Meta选项
app_label
app_label这个选项只在一种情况下使用,就是模型类不在默认的应用程序包下的models.py文件中,这时候需要指定这个模型类是那个应用程序的。
这个错误通常是由于在Django的设置文件中同时设置了APP_DIRS和LOADERS导致的。APP_DIRS设置指定了Django应该在哪些目录中查找应用程序,而LOADERS设置指定了Django应该使用哪些加载器来加载模板。
解决方法:将APP_DIRS设置从设置文件中删除或将LOADERS设置从设置文件中删除即可。
这个错误通常是由于在使用MongoEngine时没有定义默认连接导致的。MongoEngine需要一个默认连接来与MongoDB数据库进行通信。
解决方法:在Django的设置文件中定义一个默认连接,例如:
from mongoengine import connect
connect('mydb')
这个错误通常是由于在MongoDB数据库名称中包含了不允许的字符导致的。MongoDB数据库名称中不允许包含点号。
解决方法:更改MongoDB数据库名称,不要包含点号。如果必须使用点号,可以考虑使用转义字符来解决这个问题。例如:
from pymongo import MongoClient
client = MongoClient()
db = client['mydb.name.with.dot']
这个错误通常表示在Django模型中的EmailField中输入了无效的电子邮件地址。
解决方法:请检查使用的电子邮件地址是否合法。电子邮件地址应该是符合RFC 5322标准的格式。
这个错误通常是因为在Python中无法找到所需的包或模块。
解决方法:请检查是否正确安装了包或模块。确保在的Python环境中安装了所需的包,并使用正确的名称在代码中引用。特别注意大小写是否正确。
这个错误通常表示需要使用Redis缓存时,出现了无法找到Hiredis的情况。
解决方法:安装Hiredis。Hiredis是一个高效的Redis协议解析器和格式化工具库。在终端执行以下命令即可安装:
pip install hiredis
如果需要指定版本,则通过下面的指令安装即可
pip install hiredis==2.2.2
如果使用的是Mac OS X,请尝试运行以下命令:
brew install libhiredis-dev
安装完成后,请重新启动的Django Web应用程序。
这个错误通常是因为尝试在Django项目中导入了不存在的模块名或函数名。
解决方法:请检查代码,确保所有的模块名和函数名都正确。如果使用的是第三方库,请确保已经正确安装并且已经添加到的Python环境中。如果问题仍然存在,请检查的导入语句,确保正确导入了所需的模块或函数。
Django2版本调整成Django==1.11.23就可以了
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模板中反向解析一个不存在的URL命名空间。
版本:django4.2
在定义get_absolute_url方法时,使用reverse反向解析视图的URL
下面的使用方法都会造成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’
版本: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博客