Django的newforms-admin分支合并了

昨天看到一篇文章上写道Django的newforms-admin分支已经合并了。今天马上找了些文章想来看看学习下。

接下来说说现在看下来的一些基本感受吧。

1、首先Admin选项已经彻底和Model定义分离了,这是最基本也是最激动人心的变化。现在Model定义看上去一定干净整洁多了。

现在你新建一个project之后。urls.py文件已经变成了下面这个样子。

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的用法:

# 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.iteye.com/blog/81645

 

以后找到些什么新的资料也继续贴出来发布到这里吧,希望看到其他好的关于newforms-admin的资料的朋友也可以回复出来,大家一起学习。

你可能感兴趣的:(django,Blog)