Django的newforms-admin分支合并了
django book 的第六章的admin这块,用的老版本的django,新版本有些变化,需要注意,以下是转载内容。
----------------------------------------------
关键字: django newforms-admin newforms admin newformsadminbranch
[/url]
昨天看到一篇
[url=http://imtx.cn/archives/290.html]文章
上写道Django的newforms-admin分支已经合并了。今天马上找了些文章想来看看学习下。
接下来说说现在看下来的一些基本感受吧。
1、首先Admin选项已经彻底和Model定义分离了,这是最基本也是最激动人心的变化。现在Model定义看上去一定干净整洁多了。
现在你新建一个project之后。urls.py文件已经变成了下面这个样子。
Python代码
from django.conf.urls.defaults import *
-
-
# Uncomment this for admin:
-
# from django.contrib import admin
-
-
# Uncomment to load INSTALLED_APPS admin.py module for default AdminSite instance.
-
# admin.autodiscover()
-
- urlpatterns = patterns('',
- # Example:
- # (r'^mysite/', include('mysite.foo.urls')),
-
- # Uncomment this for admin docs:
- # (r'^admin/doc/', include('django.contrib.admindocs.urls')),
-
- # Uncomment this for admin:
- # (r'^admin/(.*)', admin.site.root),
- ) from django.conf.urls.defaults import *
# Uncomment this for admin:
# from django.contrib import admin
# Uncomment to load INSTALLED_APPS admin.py module for default AdminSite instance.
# admin.autodiscover()
urlpatterns = patterns('',
# Example:
# (r'^mysite/', include('mysite.foo.urls')),
# Uncomment this for admin docs:
# (r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment this for admin:
# (r'^admin/(.*)', admin.site.root),
)
要开启admin,必须去除注释from django.contrib import admin 和 (r'^admin/(.*)', admin.site.root) 这2行,至于admin/doc/其实是以前admin中就有的view部分的文档,现在作为contrib下的一个新发布的package。连同url也换了,
还有 # admin.autodiscover() 这句的意思让admin开启在每个app的目录寻找一个叫admin.py的文件,如果注释掉这句,你会发现进入admin后原来的Users, Groups, Sites 这些Model都没了,去除注释之后就会出现了,因为auth这个app已经写了一个admin.py文件,所以admin.autodiscover() 可以搜索到。通过阅读这个admin.py的源代码从一定程度上也可以了解newforms-admin的一些用法。
最基本的newforms-admin的用法:
Python代码
-
# a sample models.py file
-
from django.db import models
-
-
class Author(models.Model):
- first_name = models.CharField(max_length=30)
- last_name = models.CharField(max_length=30)
-
- def __unicode__(self):
- return u'%s %s' % (self.first_name, self.last_name)
-
-
class Book(models.Model):
- title = models.CharField(max_length=100)
- author = models.ForeignKey(Author)
-
-
# a sample admin.py file (in same app)
-
from django.contrib import admin
-
from myproject.myapp.models import Author, Book
-
-
class BookAdmin(admin.ModelAdmin):
- list_display = ('title', 'author')
- ordering = ('title',)
-
- admin.site.register(Author)
- admin.site.register(Book, BookAdmin) # a sample models.py file
from django.db import models
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author)
# a sample admin.py file (in same app)
from django.contrib import admin
from myproject.myapp.models import Author, Book
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'author')
ordering = ('title',)
admin.site.register(Author)
admin.site.register(Book, BookAdmin)
简单来说就是把 class Admin 这个内部类的定义去除掉。利用admin.site.register来注册某个Model使其在admin中可用,而第二个参数可以用来设置一些选项,相当于以前class Admin这个内部类的定义。当然现在这些选项定义是通过继承ModelAdmin这个类来实现的,功能强大很多而且很多以前需要写在Filed中的选项(比如ForeignKey 的 edit_inline)也可以完全写在这里了。Model也就彻底变清净了。
这些admin相关代码可以与Model写在同一个文件里也可以写在一个admin.py文件里(推荐)让admin.autodiscover() 自动找到。
当然与newforms-admin相关的使用不是一言两语可以说得清的。毕竟这是从一个分支合并过来,改变是相当大的,而且现在官方文档也还没有正式的整理发布出来。
2、所以我找了一些newforms-admin的一些资料,希望对需要学习newforms-admin的朋友有些帮助吧:
Django 官方的 Tutorial 已经更新,很好的newforms-admin的入门材料:
http://www.djangoproject.com/documentation/tutorial02/
newforms-admin的wiki页:
http://code.djangoproject.com/wiki/NewformsAdminBranch
Lllama's handy how-do-I guide to newforms admin:
http://code.djangoproject.com/wiki/NewformsHOWTO
Django 1.0a 代码库中的docs的admin,以后应该就是正式的文档了:
http://www.djangoproject.com/documentation/admin/
一个视频教程:
http://showmedo.com/videos/video?name=1750060&fromSeriesID=175
这个有点老了,还是分支时写的一个东西,是中文:
http://codeplayer.javaeye.com/blog/81645
以后找到些什么新的资料也继续贴出来发布到这里吧,希望看到其他好的关于newforms-admin的资料的朋友也可以回复出来,大家一起学习。