1、’staticfiles’ is not a registered tag library
Django 在2.1中即淘汰了{% load staticfiles %} 和 {% load admin_static %},并在3.0版本中直接进行了删除,因此需进行如下操作
1 2 3 4 5 |
{% load staticfiles %} {% load static from staticfiles %} {% load admin_static %} # 均应替换为 {% load static %} |
2、xxx doesn’t declare an explicit app_label and isn’t in an application in INSTALLED_APPS
一种可能是直接没有放入配置文件中的INSTALLED_APPS中,直接添加即可;
另外很多人可能也会把所有应用放到 apps 目录中,并在配置文件中添加如下配置:
1 |
sys.path.insert(0, os.path.join(BASE_DIR, 'apps')) |
此时在导入对应的模型时就不需在前面再添加 apps 了,使用 PyCharm 的朋友建议对 apps 目录执行右击>Mark Directory as > Source Root
3、xxx: (fields.E305) Reverse query name for ‘xxx’ clashes with reverse query name for ‘xxx’
这通常发生在继承了抽象模型的情况下,即对Model 进行了如下定义:
1 2 |
class Meta: abstract = True |
而如果在抽象模型中使用的硬编码的 related_name就会出现这一问题,解决方法是可以添加%(app_label)s、%(class)s,如:
1 |
%(app_label)s_%(class)s_related |
4、django.db.utils.OperationalError: (1193, “Unknown system variable ‘storage_engine'”)
线下 MySQL数据库版本5.6切到线上5.7时,应修改MySQL 配置部分的‘init_command’: “SET storage_engine=INNODB;”,为
1 |
'init_command': "SET default_storage_engine=INNODB;", |
5、如何允许字段可输入 Emoji?
MySQL数据库对应字段应修改为 utf8mb4,同时在配置文件中也需要对 charset 进行相应的修改
1 2 3 4 5 6 |
ALTER TABLE users_postcomment MODIFY `content` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # settings.py 'OPTIONS': { 'init_command': "SET storage_engine=INNODB;",'charset':'utf8mb4', }, |
6、OSError: [E050] Can’t find model ‘en’. It doesn’t seem to be a shortcut link, a Python package or a valid path to a data directory.
1 |
python -m spacy download en |
7、ModuleNotFoundError: No module named ‘pip’
1 |
python -m ensurepip --default-pip |