您的位置:首页 > 移动开发

django学习(3)---书写第一个应用(app)第二部分

2010-08-11 23:46 615 查看
这篇文章接第一部分,原文地址http://docs.djangoproject.com/en/1.2/intro/tutorial02/#intro-tutorial02

1.激活admin站点。

要激活admin站点需要做三件事情

1>在settings.py的INSTALLED_APPS里面添加"django.contrib.admin"

2>运行manage.py syncdb命令

3>编辑mysite/urls.py文件,将下列三行中的注释去掉。

http://127.0.0.1/admin/,我们将会看到admin的登录界面



如果按照第一部分做了,用第一部分的超级用户名,密码登录(如果第一部分没有创建,也可以用manage.py createsuperuser创建一个用户登录)。django的admin主页如下:



3.将我们的poll app加入到admin管理界面来

在mysite/polls目录下,新建admin.py文件,使其内容如下

#coding:cp936

from mysite.polls.models import Poll,Choice
from django.contrib import admin

admin.site.register(Poll)
admin.site.register(Choice)


这时候,就会在admin的管理界面出现对应的Poll和Choice



我们可以在这里对我们的Poll和Choice进行增删查改操作。

4。改制(定制)admin的form

我们接着修改mysite/polls/admin.py文件,使其看起来如下:

admin.site.register(Poll,PollAdmin)


修改前



看看我们修改后的效果



我们继续用fieldset修改一下:

[code]#coding:cp936

from mysite.polls.models import Poll,Choice
from django.contrib import admin

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


再看效果:



django在fieldsets里面还提供了一个额外的class

"classes":['collapse']}),
]
admin.site.register(Poll,PollAdmin)


看看效果



5。添加关联对象

继续修改admin.py,


 ]

在上面的form中,Poll下拉列表框是数据库中所有的Poll,django知道在ForeignKey在admin当中用<select>显示。

当我们点击"Add Another",就会弹出一个"Add poll"窗口.如果你在这个弹出窗口添加了一个poll,django将会把这个poll保存到数据库并且作为choice关联的poll。

这种显示方式,跟我们的日常生活中不一样,我们一般都是把poll列出,然后下面对应的choice信息。我们现在更改一下admin.py

#coding:cp936

from mysite.polls.models import Poll,Choice
from django.contrib import admin

class ChoiceInline(admin.StackedInline):
model=Choice
#extra是再额外的列出的数目
extra=1

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


还是直接看效果:



你也可以将admin.py里面的StackedInline替换为TabularInline看看效果。

6。定制admin的change列表

我们首先看一下修改前是什么模样



修改admin.py


看看效果



 ]
[code]class Poll(models.Model):
...........
def was_published_today(self):
return self.pub_date.date()==datetime.datetime.today()
was_published_today.short_description="Published today?"


效果图



我们还可以添加其他的来定制change列表.

如search_fields=['question',],list_filter=["pub_date"],将这些代码添加到mysite/polls/admin.py

search_fields=['question',]
date_hierarchy="pub_date"


效果如下



 ]
1>修改settings.py里的TEMPLATE_DIRS,TEMPLATE_DIRS是一些目录的元组,这些目录是django模板的查找路径,我们修改

TEMPLATE_DIRS,使其内容如下:

TEMPLATE_DIRS = (
"d:/mysite/templates",
)


2>将base_site.html文件(位于django的安装路径下django/contrib/admin/templates/admin/)拷贝到d:\mysite\templates\admin目录下(注意,这里有一个admin子目录)。然后编辑该目录下base_site.html即可

上图看效果:



同时我们也可以定制admin的index页面,我们这次要做的是把django/contrib/admin/templates/admin/index.html拷贝到d:\mysite\templates\admin,然后进行编辑。原文件当中有一个app_list,app_list就是在django所安装的所有app。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐