对于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便可以实现修改后台页面修改的效果。