Django+xadmin开发问题

以下总结纯属个人经验所得,若有错误请指教。

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则不可删除

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值