Django的管理面板默认是不开启的,所以我们需要进行一些设置工作
1、在INSTALLED_APPS里面把 django.contrib.admin 前面的注释去掉
2、运行

python manage.py syncdb

,建立和管理有关的表
3、编辑mysite/urls.py文件,设置管理面板的url路由规则

from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',# Examples:# url(r'^现在启动服务<div class="blockcode"><blockquote>python manage.py runserver

访问http://127.0.0.1:8000/admin/ 会看到管理登录页面

输入用户名和密码,就在上一节创建的超级用户

当然现在还是看不到我们添加的投票管理项
在polls目录下面添加admin.py页面,内容如下

from django.contrib import admin
from polls.models import Poll
admin.site.register(Poll)

django会自动重新加载修改了的文件,但如果是新添加的文件,django是不会加载的,所以需要我们重启服务
现在再看看界面

这个是投票列表页面,基本的what's up 是我们添加的项

点击 what's up编辑看看

自定义投票管理表单页面
现在我们看到的投票编辑页面是根据我们定义的模型自动生成的。现在我们看看django是如何生成poll管理页面的。

在刚才添加的admin.py页面里面,用如下内容替换刚才输入的

class PollAdmin(admin.ModelAdmin):fields = ['pub_date', 'question']
admin.site.register(Poll, PollAdmin)

看看页面有什么变化

再来看一个

class PollAdmin(admin.ModelAdmin):fieldsets = [(None,               {'fields': ['question']}),('Date information', {'fields': ['pub_date']}),]
admin.site.register(Poll, PollAdmin)

这种是给分组了,第一个字段为每个 fieldsets 的标头

django还提供给每一个 fieldset设置css类,

class PollAdmin(admin.ModelAdmin):fieldsets = [(None,               {'fields': ['question']}),('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),]

现在已经在管理面板中看到poll了,可是它的选项在哪里?

第一种方法和显示Poll一样

from polls.models import Choice
admin.site.register(Choice)

刷新看看,到添加页面看看

django默认会把有外键的字段用 select下拉框来显示

现在不管是添加投票项还是选项都是在单独的页面吧,如果要想在投票页面中直接就可以添加选项要怎么办?

from django.contrib import admin
from polls.models import Choice, Poll
class ChoiceInline(admin.StackedInline):model = Choiceextra = 3
class PollAdmin(admin.ModelAdmin):fieldsets = [(None,               {'fields': ['question']}),('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),]inlines = [ChoiceInline]
admin.site.register(Poll, PollAdmin)

意思是直接把Choice嵌入到poll管理页面来编辑,默认添加3个choice,再打开poll 添加页面看看

现在每次编辑返回查看的时候都会在下面多出3个空的选项,在最下面的一个选项下面有“Add another Choice”,点击后会在下面自动添加一个选项

修改一下 ChoiceInline看看

class ChoiceInline(admin.TabularInline):#...

StackedInline修改为TabularInline

显示样式从排列样式变成了表格样式。

自定义Poll管理列表显示样式

默认情况下,会列出第个对象的str(),如果要想显示更多的列就得需要list_display来实现

class PollAdmin(admin.ModelAdmin):# ...list_display = ('question', 'pub_date')

我们也把上次自定义添加的函数也加上

class PollAdmin(admin.ModelAdmin):# ...list_display = ('question', 'pub_date', 'was_published_recently')

点击表头可以排序,可是was_published_recently这个列却不会。因为这个现在函数不支持。另外这个列的名字默认就是函数的名称,显示的内容就是函数输出的结果。

再重新编辑一下polls/models.py

class Poll(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 = Truewas_published_recently.short_description = 'Published recently?'

再次编辑polls/admin.py,在poll管理列表中添加一个过滤面板 在PollAdmin中添加如下代码

list_filter = ['pub_date']

django会根据过滤条件列的类型自动生成一些选项。

还可以添加上搜索框

search_fields = ['question']


还可以加上时期类型的选择

date_hierarchy = 'pub_date'

会在数据列表上面加一个分层的日期选项。具体效果可以运行看看

接着再说一点有关模板的东西吧,如果想把左上角的logo换成我们自己的要怎么做呢。
1、在你的项目中新建 templates 目录
2、把django默认的后面管理模板,按一些的目录放到我们新建的templates目录下面,具体如下设置
在django的的源码中django/contrib/admin/templates 把admin/base_site.html文件按同样的目录复制到新建的templates中即在templates中建立admin子目录,然后把base_site.html复制到里面,修改里面的

Django site admin

字符串为你要的
3、修改配置文件

TEMPLATE_DIRS = (
'/path/to/mysite/templates', # 这里写你的目录,只能是绝对路径
)

明天再继续,写一次有点长了,下一篇说说模板了

转载于:https://www.cnblogs.com/djangochina/archive/2013/05/31/3111493.html

django实例:创建你的第一个应用投票系统(3)后台管理相关推荐

  1. python毕业设计作品基于django框架的鲜花水果商城毕设成品(3)后台管理功能

    整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍:框 ...

  2. 《Abaqus GUI程序开发指南(Python语言)》——第一章 概述1.1 简单插件实例——创建带孔板有限元模型...

    本节书摘来自异步社区<Abaqus GUI程序开发指南(Python语言)>一书中的第1章,第1.1节,作者: 贾利勇 , 富琛阳子 , 贺高 , 周正光 更多章节内容可以访问云栖社区&q ...

  3. Django从理论到实战(part5)--创建我们的第一个应用

    学习笔记,仅供参考 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写一下. 创建我们的第一个应用 任务:创建 ...

  4. Django从理论到实战(part4)--创建我们的第一个页面

    学习笔记,仅供参考 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写一下. 创建我们的第一个页面 任务:给我 ...

  5. django 默认查询条件_Python之Django系列-创建第一个应用-4

    上一篇:Python之Django系列-创建第一个应用-3 上一篇文章我们介绍了创建项目,打开浏览器访问http://127.0.0.1:8000/polls/,能看见"投票主页视图&quo ...

  6. python 创建一个空向量_Python之Django系列-创建第一个应用-5

    上一篇:Python之Django系列-创建第一个应用-4 这一章我们会讲到视图层怎么与数据库操作并返回数据到模板层进行渲染最终显示在页面上 投票应用基本上会有这么几个视图 问题列表页 问题详情页 问 ...

  7. django初探-创建简单的博客系统(一)

    django第一步 1. django安装 pip install django print(django.get_version()) 查看django版本 2. 创建项目 打开cmd,进入指定目录 ...

  8. [译] 使用 Web3 和 Vue.js 来创建你的第一个以太坊 dAPP(第二部分)

    原文地址:Create your first Ethereum dAPP with Web3 and Vue.JS (Part 2) 原文作者:Alt Street 译文出自:掘金翻译计划 本文永久链 ...

  9. 手把手教创建你的第一个以太智能合约:ETHEREUM PET SHOP(译)

    手把手教创建你的第一个以太智能合约:ETHEREUM PET SHOP(译) 原文地址 : http://truffleframework.com/tutorials/pet-shop 译者:luci ...

  10. Web框架之Django_01初识(三大主流web框架、Django安装、Django项目创建方式及其相关配置、Django基础三件套:HttpResponse、render、redirect)

    阅读目录 摘要: Web框架概述 Django简介 Django项目创建 Django基础必备三件套(HttpResponse.render.redirect) 一.Web框架概述: Python三大 ...

最新文章

  1. 数据库连接池到底应该设多大?
  2. ssl初一组周六模拟赛【2018.3.10】
  3. 3分钟入门python_3分钟带你了解世界第一语言Python 入门上手也这么简单!
  4. ip在线代理网页联合早报_一次免费代理ip的爬取实战
  5. 【Kafka】kafka SSL close message 远程主机被迫关闭了一个连接
  6. 【redis】Redis简介
  7. 【个人笔记】OpenCV4 C++ 快速入门 23课
  8. display:inline、block、line-block实现导航条自动居中
  9. 百度之星1004度度熊的午饭时光
  10. 各种风格的Android面试题进来了解一下,面试必问
  11. 常用的文件后缀都有哪些?
  12. RTKLIB-观测值文件
  13. 【Bug】Tomcat异常Serveral ports(8005,8080,8009) required by Tomcat v8.0 Server at localhost are already
  14. 翻译TIPatterns--项目(Projects)
  15. 钱诚12.31黄金原油最新行情资讯分析,纸白银投资操作指南
  16. 高级数据结构之红黑树
  17. linux如何进windows系统还原,怎样进行系统修复,还原?具体步骤是什么?
  18. Android 10.0 开启和关闭护眼模式
  19. 5 Go与微信开发与Web安全
  20. codeforces 1311-c

热门文章

  1. [Poi2000]公共串 hustoj2797
  2. 安装Cocoapods, 更新gem出现的问题
  3. C# Winform关于控件TabControl闪烁的问题
  4. java sleep和wait的区别和联系
  5. Spring入门看这一篇就够了
  6. Too many authentication failures for
  7. 【SICP练习】31 练习1.37
  8. onActivityResult在setResult之前被调用
  9. 真希望能夠統一一下接口
  10. 今天加入了OSChina,准备将我的BLOG搬到这里。