以下总结纯属个人经验所得,若有错误请指教。
1. django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
解决:1. pip install pymysql
2. 在项目文件的 __init__.py 文件中添加以下代码
import pymysql
pymysql.install_as_MySQLdb()
2. django.db.utils.InternalError: (1193, "Unknown system variable 'storage_engine'")
解决:如果mysql数据库的版本是5.6会报异常(setting.py文件中数据库设置即DATABASES{}中数据库添加数据库引擎设置):
"OPTIONS":{"init_command":"SET default_storage_engine=INNODB;"}
3. 'Specifying a namespace in include() without providing an app_name '
解决:from django.urls import path
from . import views
app_name = 'myapp
urlpatterns = [
path('myapp /', views.testViews.as_view(), name= testViews),
]
4. TypeError: __str__ returned non-string (type NoneType)登录报错
解决:用户模型返回了一个可为空的字符串,返回一个不为空的字符串即可,例如原有的username
def __str__(self):
return self.username#这里原来返回了可为空的字段,所以返回为None会报错
5.ViewSet重写queryset方法时报错:it does not have a `.queryset` attribute.或者:AttributeError: 'function' object has no attribute 'model'
解决方法:
Djangorestframework的路由注册添加base_name即可:
router.register(r'test', testList, base_name=' test ')
6.xadmin中分页显示未成功,“不识别中文引起”
7. 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.
报错,原因,启动方式不对
(1). 修改后启动
8. AttributeError: 'function' object has no attribute 'get_extra_actions'
原因:自定义Url注册格式错误(cbv定义时)
正确格式:url(r'^test/', test.as_view(), name=" test "),
9. Cannot assign "3877": "test.name" must be a "info" instance.
原因:
Test关联info表,3877为其外键也就是info的主键,若是自定义添加记得name要写成name_id,否者无法找到info的
id(models在数据库中生成的test表name字段实则名字为name_id)
解决:把方法中的字段加”_id”即可
10.两张表的models不能互相导(报交叉引用错误)Can‘’t import ……
11.Data truncated for column ' ' at row 1 错误
原因:mysql插入的数据编码错误或者数据库或者数据表的编码与插入数据或sql数据文件不同
解决:改变sql文件的编码使其与mysql的表与库编码一致
12.xadmin的过滤器不显示过滤选项反而成了搜索框
原因:model定义字符过长
解决:缩短将过滤字段的定义长度到字段数据能接受的最小长度(没测试CharFied的能定义字段的最大长度,自行拿捏)
13.问题:socket.gaierror:[Error 11001] getaddrinfo failed
原因:读取的字符串有换行或者空格
14.问题:AttributeError:’str’ objecthas no attribute ’match’
原因:命名将包的名字占用,所以无法正确加载包 。
15.app下的url配置xadmin自定义视图时老是找不到路径:
注意不能与原有的url重名,注意project中总的url需导入分app的url,不管大小写,注意层次,用xadmin注册的url会添加一
个/xadmin的前缀
16.django update_or_create(**kwags,default)用法:
default是有变动的或者需要更新的字段,kwags是给定用来查找需要更新的某个对象的,若是找到了就更新,若是未找到就创
建,注意查找返回的对象只能是一个,否则会报多参数的错。
17.Invalid template name in 'extends' tag: ''. Got this from the 'base_template' variable.
以下继承从context中获取标签,数据等等
18.有时django后台权限分配不受控制,此时可在要注册的Admin类中重写失效的权限
以删除为例:
class TestAdmin(object):
def has_delete_permission(self):
current_user_set = self.request.user #获取当前用户
if 'User.delete_test' in current_user_set.get_group_permissions():
#User为用户模块,此处判断当前用户是否有该模块的删除权限
return True#返回True则可删除
return False#返回False则不可删除