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/目录下并对其进行修改。相关文章推荐
- Django(三)——公众页面-视图
- Django(一)——the first try
- Google map实现类似Google earth的图标展开功能
- mongo 日记
- django1.8认证系统(3)
- bc第六场Goffi and GCD
- django1.8认证系统(2)
- UVA 1149 - Bin Packing ( 贪心 + 二分 & STL )
- mongo gte lte的使用
- mongoskin aggregate group
- mongo之mapreduce统计唯一字段
- Google CFO 的辞职信(引用)
- 使用Heroku搭建Django应用
- mongoexport 2.6数据导出
- django根据字符串长度截取字符串
- HDU 5318 The Goddess Of The Moon(矩阵快速幂详解)
- go实现爬取href链接
- go的读写操作
- go的接口实现
- HDU 4983 Goffi and GCD(数列、欧拉函数)