Django管理界面问题

10 篇文章 0 订阅


对于Python开发这个Web框架,只能用一个强大来形容,它让搭建一个web网站变得十分容易。首先我们要用到后台管理页面首先是要连接数据库,数据库连接后然后通过

命令 ./manger syncdb 创建用户名还有密码便可以现实后台管理界面。我们可以通过后台管理界面来对数据库增删查改操作。

第一次登陆后台管理界面时候只有两个表,一个User 表,一个Group表,估计这是用来管理系统用户的,我们姑且不用理他,那么怎么让自己在对应数据库创建的数据表显示到后台来呢?

一.通过Django添加数据表

进入我们的项目管理,我的项目是mysite 进入之后,我通过命令已经创建了一个app 我的app叫newsite 在我的app里面有个叫做models.py的东西,我们可以通过添加一个继承models.Model的子类来

class Publisher(models.Model):
  name = models.CharField(max_length=30)
  address = models.CharField(max_length=50)
  city = models.CharField(max_length=50)
然后保存,接下来需要在admin.py处注册,然后我们打开同一个目录下的admin.py 文件

首先我们导入模块,不导入无法找到该类,

from newsite.models import Publisher
然后然后我们向后台注册这个表:

admin.site.register(Publisher)
之后返回到项目根目录页面通过语句./manager syncdb 创建数据表,在通过命令./manager runserver 8000创建端口号为8000的web服务器。

通过127.0.0.1:8000/admin/便可以登陆进去。便可以看到有Publisher这个表了。

现在问题来了,我们点击进去之后发现他只现实Publisher的对象,比如我们添加了一些数据之后,他并没有把每条数据的列都现实出来。这怎么办呢?相信大家进去后就会明白我说什么了。

二.修改后台管理显示

我也是新手,首先我通过看电子书,书上说,我们回到models.py这个文件,在已经有的类下面添加以下语句

class Publisher(models.Model): 
  name = models.CharField(max_length=30) 
  address = models.CharField(max_length=50)
  city = models.CharField(max_length=50)
    class Admin:
       list_display = ('name', 'address', 'city')
       #print list_display
       list_filter = ('name',)
       ordering = ('-address',)
       search_fields = ('name',)

通过创建一个内部类Admin 这里添加了显示的列, 右手边会添加一个过滤列表, 排序是根据地址逆顺序排序,还有查找框是根据输入的根据name字段进行查找。不过问题来了,当我刷新页面的时候发现根原来一点变化都没有。

后来寻找了以下教程,有些人需要修改的是admin.py这个文件

我们在文件里面创建这个类

class PublisherAdmin(admin.ModelAdmin):
  list_display = ('name', 'address', 'city')
  list_filter = ('name',)
  ordering = ('-address',)
  search_fields = ('name',)

然后通过绑定注册。

admin.site.register(Publisher, PublisherAdmin)

一举成功,下面是我显示出来的页面效果。

不过现在问题又来了,我就想为什么要添加两段一样的代码。这样不是很多余?根据Python的简约设计风格还有Django的松耦合设计应该没有这种必要把。

我就试着删除一部分代码看效果如何。

当我把models 中Publisher 的Admin内部类删除后发现显示结果仍然没变,其实那部分代码不需要也是可以的,只是修改admin.py便可以实现修改后台页面修改的效果。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值