Django-Admin站点--admin.E108错误

本文分享了在使用 Django 的 admin 功能时常见的错误及其解决方案,特别关注于如何正确注册模型类和自定义管理类,确保后台管理界面正常显示。
来分享一下在admin注册的时候,容易遇到的错误

我写的代码如下:

###定义后台管理类###
class BookInfoAdmin(admin.ModelAdmin):
    ######列表显示页操作######
    list_per_page = 2

    #######操作选项 的位置#####
    actions_on_top = True
    actions_on_bottom = True

    ######列表中的列######
    list_display = ["id", "btitle"]

class HeroInfoAdmin(admin.ModelAdmin):
    list_per_page = 5
    # 修改动作按的位置
    actions_on_top = True
    actions_on_bottom = True

    ##在显示时,定义显示那些数据字段
    list_display = ["hname","hgender","hcomment","read"]

写到这里你发现代码没有报错,但是在网页上,发现没有得到自己想要的结果,那这个时候肯定是你没有注册模型类
注册前是这样:

# 注册模型类
admin.site.register(BookInfo)
admin.site.register(HeroInfo)

注册后是这样:

# 注册模型类
admin.site.register(BookInfo, BookInfoAdmin)
admin.site.register(HeroInfo, HeroInfoAdmin)

如果你出现以上问题这样可以解决.

当然如果你出现一下问题

<class 'users.admin.BookInfoAdmin'>: (admin.E108) The value of 'list_display[1]' 
refers to 'btitle', which is not a callable, an attribute of 'BookInfoAdmin', 
or an attribute or method on 'users.HeroInfo'.

那你需要检查一下是不是注册模型类的时候,模型类写错了.导致了这样的问题,第34行是HeroInfoAdmin
我不小心也写成了BookInfoAdmin,所以出现了以上的报错信息.

33 admin.site.register(BookInfo, BookInfoAdmin)
34 admin.site.register(HeroInfo, BookInfoAdmin)

改一下就好了

# 注册模型类
admin.site.register(BookInfo, BookInfoAdmin)
admin.site.register(HeroInfo, HeroInfoAdmin)

这个问题我卡了半个小时左右,终于找到了是这里的问题.犯了一个很低级的错误.哈哈哈哈

其实我发现python中很多时候,其实我们犯得错误都不大,大部分都是粗心大意造成的,耐心的去发现错误,解决错误,你会变得更厉害,加油吧.年轻人!!!

Where there is a will there is a way!

### 作用及区别 `django-admin.py` 和 `django-admin` 是用于管理 Django 项目的命令行工具,但它们在使用方式和实现机制上存在差异。 #### django-admin.py 的作用 `django-admin.py` 是一个 Python 脚本,用于执行 Django 提供的管理命令。它主要用于创建项目、启动应用程序、运行迁移等操作。例如,可以通过以下命令创建一个新的 Django 项目: ```bash django-admin.py startproject myproject ``` 在早期版本的 Django 中,`django-admin.py` 是主要的命令行工具,用户通过直接调用该脚本来执行管理任务[^3]。 #### django-admin 的作用 `django-admin` 是一个可执行文件,通常是一个封装了 `django-admin.py` 的快捷方式。它提供了与 `django-admin.py` 相同的功能,但使用方式更为简洁。例如,创建项目的命令如下: ```bash django-admin startproject myproject ``` 在较新版本的 Django 中,`django-admin` 成为了推荐使用的工具,因为其语法更简洁,且无需显式调用 Python 解释器[^2]。 #### 区别 1. **调用方式** `django-admin.py` 是一个 Python 脚本,需要通过 Python 解释器运行,例如: ```bash python django-admin.py startproject myproject ``` 而 `django-admin` 是一个可执行文件,可以直接运行,无需显式调用 Python 解释器: ```bash django-admin startproject myproject ``` 2. **兼容性** `django-admin.py` 在 Django 的早期版本中广泛使用,但在 Django 4.0 及以后版本中已被标记为过时,取而代之的是 `django-admin`。这意味着,虽然 `django-admin.py` 仍然可用,但官方不再推荐使用,并计划在未来版本中移除[^2]。 3. **环境依赖** 使用 `django-admin.py` 时,需要注意 Python 环境的配置,尤其是在多版本 Python 共存的情况下,可能需要指定具体的 Python 解释器路径。而 `django-admin` 通常会自动适配当前环境,减少了手动配置的复杂性。 4. **生成文件的完整性** 在某些情况下,使用 `django-admin.py` 创建项目时可能会出现生成文件不完整的问题,例如缺少 `manage.py` 文件。这通常与环境变量或路径配置有关,而使用 `django-admin` 则较少出现此类问题[^5]。 #### 使用场景 在实际开发中,建议优先使用 `django-admin` 来管理 Django 项目,因为它更简洁且兼容性更好。然而,在某些特殊情况下,例如需要显式控制 Python 解释器版本时,可以使用 `django-admin.py` 并通过全路径调用以确保命令的正确执行[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值