django (四) 第一个django app 自动生成admin site

生成管理网站让你的员工或客户添加、更改和删除内容是非常繁琐的工作。出于这个原因,Django完全自动化管理接口模型的创建。Django明确的将“内容发布者”和“公共”网站进行分离。网站管理人员使用该系统添加新闻,事件,体育成绩,等等...显示内容在公共网站。Django为网站管理员创建一个统一的界面来编辑内容。

所以admin并不是给网页浏览者使用的,而是给管理者使用的。

下面,我们将admin应用添加进我们的项目。修改setting.py如下:

INSTALLED_APPS = (
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.sites‘,
    ‘django.contrib.messages‘,
    ‘django.contrib.staticfiles‘,
    ‘polls‘,    ‘django.contrib.admin‘,
    # Uncomment the next line to enable admin documentation:
    # ‘django.contrib.admindocs‘,
)

重新执行:

manage.py syncdb

修改mysite/urls.py如下:

from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns(‘‘,
    # Examples:
    # url(r‘^$‘, ‘mysite.views.home‘, name=‘home‘),
    # url(r‘^mysite/‘, include(‘mysite.foo.urls‘)),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r‘^admin/doc/‘, include(‘django.contrib.admindocs.urls‘)),

    url(r‘^admin/‘, include(admin.site.urls)),
)

好,接下来我们启动服务器:

manage.py runserver

登录http://127.0.0.1:8000/admin/,你将看到如下界面:

ok~你可以输入你初始化数据库的Username和Password,点击Log in你将看到如下画面:

这些都是网站管理员可以使用的核心的功能。

但是,投票功能在哪呢?好的,接下来我们将告诉admin我们的Poll对象需要有一个admin接口,为了实现这个任务,我们需要在mysite/polls/下新建一个admin.py文件,然后内容如下:

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

admin.site.register(Poll)

这时,你需要手动重启服务器来刷新页面。(因为创建了一个新的文件)
点击Poll条目右边的Add,添加Question:who is the most handsome man?输入日期,最后save:

通过注册投票模型admin.site.register(Poll),Django能够构造一个默认的表单。当你想自定义admin app的外观和功能时,你需要在注册对象时说明一下。

下面我们来展示一下如何对表单的展示顺序进行重新排序,删除原来的代码:

admin.site.register(Poll)

换成以下代码:

class PollAdmin(admin.ModelAdmin):
    fields = [‘pub_date‘, ‘question‘]

admin.site.register(Poll, PollAdmin)

你会遵循这种模式:创建一个模型管理对象,然后将它作为第二个参数传递给admin.site.register()。

展示的顺序交换了,时间展示在问题的前面了。

你也可以按如下方式,一次性修改更多的顺序:

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

展示如下:

你也可以让其中一个条目隐藏(可展开),比如说Date:

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

接下来,我们将添加Choice对象,这里有两种办法,第一种就是和Poll一样,如下:

# -*- coding: utf-8 -*-
from django.contrib import admin
from polls.models import Poll
from polls.models import Choice

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

重启服务器,加载页面,添加Choice,出现如下画面:

这个时候,Choice里的Poll条目是一个下拉框,里面有数据库里所有的Poll对象,Django知道,只要是外键就会展现一个这样的下拉框,当你点击右边的+号时,就会自动跳到Poll的编辑界面去。

另外一种更有效的方法是

时间: 2024-10-29 06:29:47

django (四) 第一个django app 自动生成admin site的相关文章

django (三) 第一个django app 创建model

经过上一章,我们已经创建好一个django app了,接下来,我们开始完善它. 首先,我们先了解些基本概念. Django中创建的每个应用程序都是由Python的包组成,遵循某些约定.Django配有一个实用程序,自动生成一个应用程序的基本目录结构,所以您可以专注于编写代码,而不是创建目录. 那么项目和应用程序到底有什么区别呢? 一个app是一个web应用:比如一个博客系统,一个简单的投票系统.而一个项目是一个集合的配置和应用程序特定的Web站点.一个项目可以包含多个应用程序.应用程序可以存在于

django (五) 第一个django app 创建template,修改admin外观

上一章,我们完成了admin的基本功能,但是,它的外观实在是太丑了,那么接下来,我们就尝试去改变它吧~ 要想改变它就要使用Django的模板系统.由于admin是Django自带的app,所以他用的是Django自带的模板系统. 首先你需要在项目中创建一个模板文件夹,你可以把它放在文件中的任何位置,这里假设路径是mysite/templates 注意:这里的mysite是最外面的文件夹.修改settings.py: TEMPLATE_DIRS = ( r'C:\mysite\templates'

django (二) 第一个django app

第一个django app 我们来做一个投票网站. 他由两部分组成: 一个公共界面让用户去投票 一个管理界面,对投票增删改. 首先,你得创建一个新的项目,只需一行代码,django将自动为你完成这项任务. cd切换到你想存储你项目的路径下如C:\,输入: django-admin.py startproject mysite 这时,你的C:\下将多了一个文件夹mysite,打开后你会看到: mysite/ manage.py mysite/ __init__.py settings.py url

django (六) 第一个django app 创建views

在Django,网页和其他内容通过views来进行交互.每个视图都通过一个简单的Python函数(或方法)来展示.Django将通过检查请求的URL来选择一个视图(更精确地说是域名后面的URL).从URL到View的过程是通过URLconfs来控制的. 接下来让我们写一个view.首先打开polls/views.py,添加如下代码: # -*- coding: utf-8 -*- from django.http import HttpResponse def index(request): r

百度Web App在线生成平台Site App体验

最近收到百度开发者中心邮件,告知之前的百度移动建站服务已经升级为Site App了,Site  App顾名思义是可以创建APP的站点,之前想建立一个APP要么是自己制作,要么是选用国外的在线Web APP工具来实现,现在百度推出的Site  App极大的解决了中小网站无法建立APP站点的事实. 下图为电脑站.移动建站.Web APP的图示: 通过图例我们可以看到,之前通过把电脑版通过百度移动建站后在手机上的显示效果,界面显得如此凌乱,而使用Site App后,界面则整洁了许多,也像一个Web  

自动生成admin(后台)

public --->>>>index.php 入口文件如下: 1 // +---------------------------------------------------------------------- 2 // | ThinkPHP [ WE CAN DO IT JUST THINK ] 3 // +---------------------------------------------------------------------- 4 // | Copyri

django (七) 第一个django app 创建表单

首先,在polls/detail.html里添加<form>: <h1>{{ poll.question }}</h1> {% if error_message %} <p><strong>{{ error_message }}</strong></p> {% endif %} <form action="{% url 'polls:vote' poll.id %}" method="p

django (八) 第一个django app 添加样式表和图片

在Django中,需要把Css和图片等文件放在static files下. 然后依次创建下列文件下: polls/static/polls/style.css 然后修改style.css如下: li a { color: green; } 下一步,在polls/index.html里添加下面代码: {% load staticfiles %} <link rel="stylesheet" type="text/css" href="{% static

django学习2-第一个Django页面:Hello World

在url.py中写入URL 一定要导入视图: from.mysite import hello url(r'^hello/$',hello), #r表示不转义特殊字符. 2.定义一个views.py 写入下面的语句 from django.http import HttpResponse def hello(request):    return HttpResponse("Hello world") 3.这样输入python manage.py runserver 访问127.0.0