编写你的第一个Django程序,第二部分
本文接续第一部分。我们会继续开发网页投票程序,并深入研究Django自动生成后台的功能。
哲理
为你的员工或客户创建后台来管理内容是一件不需要什么创意的乏味工作。因为这个原因,Django为模型对象有一套完整的自动创建管理界面的机制。
Django是在一个新闻编辑部里诞生的,在这个环境下在“内容编辑”和“公众网站”之间有很明显的分界线。网站管理员使用这个系统来增加新闻内容、时间、体育赛事报道等等,而这些内容会在公众网站上展示出来。Django为网站管理员提供了一个统一的管理界面。
管理工具不是让网站访问者来使用的;它是为了网站管理员而准备的。
启用管理后台
默认情况下Django管理后台是不启用的——它是可选的。要启用管理后台,要做三件事:
l 在INSTALLED_APPS设置中加入django.contrib.admin。
l 运行python manage.py syncdb。因为你在INSTALLED_APPS中加入了一个新程序,数据表需要更新。
l 编辑mysite/urls.py文件,并将“Uncomment the next two lines...”下面的部分取消注释。这个文件是URL配置文件;我们会在后面的部分深入URL配置。现在你所需要知道就是它将URL映射到代码中。最后你保存的url.py文件应该向下面这样:
Django开发版本中有更改:添加管理后台的URL的方法在Django1.1中已经改变。
from django.conf.urls.defaults import *
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Example:
# (r'^mysite/', include('mysite.foo.urls')),
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
# to INSTALLED_APPS to enable admin documentation:
# (r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
(r'^admin/', include(admin.site.urls)),
)
粗体的部分就是要取消注释的代码。
启动开发服务器
我们来启动开发服务器,看看管理后台是什么样的。
复习第一部分,启动服务器需要用到下面的命令:
python manage.py runserver
现在打开浏览器,在本地域名上访问/admin/——例如http://127.0.0.1:8000/admin/。你就会看到下面的登录界面:
进入管理后台
现在试试登录进去(还记得不?前面你已经创建了一个超级用户的账户)。你能看到Django管理后台的首页:
你会看到几块能够进行编辑的内容,包括Gourps、Users、Sites。这些都是Django默认的特性。
让投票程序的数据可编辑
但是投票程序显示在哪里?在管理后台的首页上没有显示出来。
只需要做一件事:我们要告诉管理后台Poll对象要有个管理界面。在polls文件夹下创建一个admin.py文件,加入下面的代码:
from mysite.polls.models import Poll
from django.contrib import admin
admin.site.register(Poll)
重启服务器后,你就能看到改变。正常情况下,当你修改一个文件的时候,服务器会重新加载代码;但是添加一个文件并不会重新加载。
体验管理功能
现在我们在管理后台中注册了Poll模型,Django就知道要在后台首页上显示出来了:
点击“Poll”。现在你看到一个投票数据的列表页面了。这个页面显示了数据库中所有投票数据,你可以点击一个进行修改。刚才我们有个“What’ up”的投票选项:
点击它进行编辑:
有几点需要注意:
l 表单是根据Poll模型自动生成的。
l 不同的字段类型(DateTimeField、CharField),在页面上会有不同HTML元件来展示。在Django管理后台中,每个字段都有自适应的展现方式。
l 每个DateTimeField都有JavaScript快捷方式。日期有“Today”快捷方式和日期控件弹出框,时间有“Now”快捷方式和常用时间选项弹出框。
页面的底部有一些可选操作:
l Save——保存当前改变,回到列表页面。
l Save and continue editing——保存当前改变,重新载入当前编辑数据。
l Save and add another——保存当前改变,加载一个新的空表单。
l Delete——显示删除确认页面。
点击“Today”和“Now”快捷方式修改“Date published”字段。然后点击“Save and continue editing”。接着点击右上角的“History”,你会看到当前记录所有的修改历史,包括了修改的时间和操作的用户:
定制管理表单
感叹一下吧,你不用写多少代码就能有个管理后台了。当你调用admin.site.register(Poll)时,Django让你可以编辑它的内容,并能够“猜测”怎样展示这个对象。你常常要考虑管理界面的界面和功能,只需要在注册对象的时候告诉Django对应的设置就可以了。
我们来看看怎样在编辑表单上给字段重新排序。把admin.site.register(Poll)这一行做如下的替换:
class PollAdmin(admin.ModelAdmin):
fields = ['pub_date', 'question']
admin.site.register(Poll, PollAdmin)
你要遵循这种规范——创建一个管理模型对象,把它作为admin.site.register()的第二个参数传入——当你要改变这个对象的管理设置时。
刚才的改变让“Publication date”字段排在了“Question”字段前面:
这对于只有两个字段的模型来说,给你的体验不会太深,但是在一个有很多字段的管理表单里,选择一个直观的排序方式是非常重要的细节。
刚才提到了多字段的表单,你可能想把这些字段都分成一个个组里去,下面的代码可以做到:
class PollAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question']}),
('Date information', {'fields': ['pub_date']}),
]
admin.site.register(Poll, PollAdmin)
在fieldsets中每个元组的第一个元素就是组的标题。现在我们的表单看起来就像是这样的:
你可以给每个组加上HTML样式。Django提供了“collapse”样式,使用这个样式的组初始时是收缩的。当你的表单中有个组包含了很多不常用的字段时,这个样式是很有用的:
class PollAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
- 大小: 7.3 KB
- 大小: 9.4 KB
- 大小: 11 KB
- 大小: 17.1 KB
- 大小: 10.7 KB
- 大小: 8 KB
- 大小: 17.6 KB
- 大小: 11.9 KB
- 大小: 15.2 KB
分享到:
相关推荐
### Django Web 开发指南 #### 一、简介 《Django Web 开发指南》是一本专为希望使用Python进行Web应用开发的技术人员所撰写的书籍。本书由Jeff Forcier、Paul Bissex与Wesley Chun共同编写,三位作者都是在Python...
靠前部分-靠前~3堂以一个小型的个人博客网站为主轴 介绍如何快速建立一个实用的Django网站;D1二部分-D14~7堂是Django架构深入剖析 详细分析Django的MVC/MTV架构;D1三部分-D18~11堂为实用网站开发技巧;D1四部分-靠...
标题中提到的是“Django中文版 教程...综上所述,这份教程是全面介绍Django框架的中文版教材,不仅覆盖了Django的基本概念和操作,还深入探讨了高级主题和最佳实践,适合作为Python Web开发新手的入门指南和进阶参考。
### Django+Web开发指南 #### 一、简介与概述 《Django+Web开发指南》是一本关于Python Web框架Django的详细介绍书籍...无论你是刚接触Django的新手还是已经有一定经验的开发者,都可以从中获得有价值的信息和指导。
- **3.17 迁移到 Python 3**:提供了从 Python 2 迁移到 Python 3 的指导。 - **3.18 安全性**:强调了 Django 在安全性方面的重要性和实践。 - **3.19 对象序列化**:介绍了 Django 对象序列化的过程。 - **3.20 ...
**Django新手指南** Django是一个基于Python的高级Web框架,它强调了代码的简洁性和可重用性,使得开发者可以快速地构建高效、可扩展的Web应用。本指南将帮助初学者理解Django的基本概念,并逐步学习如何使用Django...
- **起步指南**:这部分是新手入门必备的教程,指导用户从零开始安装和配置 Django,并通过一个简单的示例应用程序来了解 Django 的基本结构和功能。 - **模型层**:解释了如何定义数据模型以及 Django ORM(对象...
本文档为 Django 1.5.3 版本提供了详尽的指导,旨在帮助开发者从零开始构建高质量的 Web 应用程序。文档由 Django 软件基金会发布于 2013 年 9 月 14 日。 #### 二、文档结构与主要内容 ##### 1. Django 文档概述 ...
1.9版本的Django官方文档提供了从零开始学习Django的“First steps”部分,这部分内容是为新手或者刚开始学习编程的开发者准备的,内容包括从Django的基础概览、安装到具体的教程,涵盖了请求和响应、模型和管理后台...
### Django后端新手如何初始化配置 对于初学者来说,Django 是一个功能强大且易于上手的 Python Web 开发框架。本文将详细指导你完成 Django 项目的初始化配置,并重点介绍如何连接数据库以及如何实现基本的增删改...
这部分通常会指导新手开发者如何设置开发环境,创建项目和应用,并编写简单的视图、模板和表单。 3. 模型和数据库 这部分会介绍如何定义数据模型,以及如何与数据库交互。Django提供了对象关系映射(ORM)系统,使得...
《官方DjangoBook中文版》是一份详尽的Django框架学习资料,旨在为初学者和进阶者提供全面的指导。Django是基于Python语言的高性能Web开发框架,以其MVC(Model-View-Controller)设计模式和“ batteries included ...
**Django Web开发指南** Django,一个基于Python的开源Web框架,因其高效、安全且易于使用的特点,已经成为全球开发者构建Web应用...无论你是Python新手还是资深开发者,这份指南都能成为你探索Django世界的宝贵资源。
首先,文档的标题“Django官方文档”表明了这是关于Django这一Python Web框架的权威指南。Django是一个高层次的Python Web框架,它促进了快速开发,并遵循MVC(模型-视图-控制器)设计模式。 接下来,文档的描述...
这部分内容通常会引导新手快速上手Django框架。它从Django的概览开始,提供了一个快速安装指南。接下来会手把手地指导用户编写第一个Django应用程序,通常包含多个部分(例如七个部分),帮助用户逐步构建起一个完整...
**Django 1.11 文档 HTML 版** Django 1.11 是一个功能强大、高效...无论你是正在学习Django的新手,还是寻求特定问题解决方案的开发者,都能从中受益。记得时常查阅文档,它会成为你Django开发旅程中不可或缺的伙伴。
### Django框架学习指南 #### 一、概述与背景 Django 是一个高级的 Python Web 框架,它鼓励快速开发、干净且实用的设计。它遵循 MVC(模型-视图-控制器)架构模式,旨在通过减少重复代码来简化Web应用程序的开发...
这部分内容为新手提供了快速上手指南,包括如何安装 Django、创建项目、编写第一个应用等基础知识。 **4. 模型层 (The model layer)** 模型层是 Django 框架的核心之一,负责数据的存储和检索。这一章节详细介绍了...
- **新手入门**:为初次接触Django的用户提供入门指南,包括环境搭建、项目创建等基础知识。 - **从零开始**:适合完全没有经验的新手,详细介绍如何一步步构建一个Django应用。 - **概览**:对Django的整体架构进行...
- 新手可以通过官方文档中的“编写你的第一个Django应用”系列指南快速上手,这部分内容通常会引导初学者一步步完成从安装Django到创建、运行并测试一个基础Web应用的整个过程。 3. 模型层(The model layer) - ...