您的位置:首页 > 编程语言 > Go语言

Django(二)——管理页面的操作

2015-07-31 19:07 393 查看

Django(二)——管理页面的操作

标签(空格分隔): Django

启动管理网站

设置超级用户(管理员)

$ python manage.py createsuperuser


输入用户名、邮箱、自定义密码,出现

Superuser created successfully.
完成。

打开服务器并添加
/admin/


$ python manage.py runserver


并打开网页http://127.0.0.1:8000/admin/

输入用户密码,登陆django默认管理页面

添加应用项目

添加poll应用接口,在polls目录下编辑admin.py文件

from django.contrib import admin
from polls.models import Question

admin.site.register(Question)


刷新一下,出现了poll的管理模块,现在点击question–>what’s up 可以进入对问题what’s up的编辑,当然现在只有默认的question text与date published两项。

自定义应用项目的显示

回到polls/admin.py文件中,新建一个类QuestionAdmin作为Question管理界面的配置方法

from django.contrib import admin
from polls.models import Question

class QuestionAdmin(admin.ModelAdmin):
fields = ['pub_date', 'question_text'] #这里改变两项的位置

admin.site.register(Question, QuestionAdmin) #将配置加入对Question的描述中


还可以使用fieldsets集合对不同的字段项进行划分

from django.contrib import admin
from polls.models import Question

class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None,               {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date']}),
] #这里使用fieldsets对两项进行划分

admin.site.register(Question, QuestionAdmin)


每个fieldset还能指定一些XHTM样式进行修饰,比如将

('Date information', {'fields': ['pub_date']}),
添加上

('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
能将此Date information初始为折叠项

添加关联对象

既然是投票应用,必须将选项也置入管理中,同样,可使用

admin.site.register(Choice)
的方法,但这很麻烦,一次只能加上一个选项。

因为Choice是与Question关联的,可以直接在添加Question时添加多个Choice模块

在polls/admin.py中,编辑

from django.contrib import admin
from polls.models import Choice, Question

class ChoiceInline(admin.TabularInline): #有另一种 StackedInline
model = Choice                       #的内嵌表项但占用很多空间
extra = 3

class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None,               {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]

admin.site.register(Question, QuestionAdmin)


修改应用管理界面的变更列表

默认显示的poll只是显示str()字串的内容,把poll中的所有字段都显示出来:

使用list_display(一种元组tuple)来包含要显示的字段,要使用它,在polls/admin.py中QuestionAdmin类末尾添加

class QuestionAdmin(admin.ModelAdmin):
# ...
list_display = ('question_text', 'pub_date', 'was_published_recently')


为了使界面更加美观,在models类内对字段进行定义:

class Question(models.Model):
# ...
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
was_published_recently.admin_order_field = 'pub_date'
was_published_recently.boolean = True
was_published_recently.short_description = 'Published recently?'


增加筛选按日期筛选的功能,在QuestionAdmin末尾继续添加

list_filter = ['pub_date']


增加按名搜索功能:

search_fields = ['question_text']


自定义项目管理界面的模板

在项目文件夹内新建名为templates的文件目录,在mysite/settings.py内添加一行
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]
来告诉Django模板的位置,将Django源文件夹内
django/contrib/admin/templates/admin/base_site.html
文件复制到刚刚新建的文件夹的子文件目录admin内(这个目录也需要新建)

默认情况下的模板是由Django从settings.py中的INSTALLED_APPS内加载的(别忘了里面可有默认的Django应用哦),它从每个应用中寻找templates目录并加载里面的内容。

自定义应用模板(不会)

自定义主页模板

跟项目模板一样,将Django源文件目录中templates/admin/index.html复制到项目内的templates/admin/目录下并对其进行修改。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: