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的资料的朋友也可以回复出来,大家一起学习。