django 学习笔记 (二)

二、Writing your first Django app, part 2

激活管理站点

  1. 取消 settings.py 中 INSTALLED_APPS 中 admin 注释
    'django.contrib.admin',

  2. 使用south管理数据库

    python manage.py schemamigration polls --auto
    python manage.py migrate polls
    
  3. 设置 mysite/urls.py

    from django.contrib import admin
    admin.autodiscover()
    
    urlpatterns = patterns('',
        ...
        url(r'^admin/', include(admin.site.urls)),
    
  4. 启动服务器
    python manage.py runserver
    访问地址 http://127.0.0.1:8000/admin/

增加 poll

  1. 增加 polls/admin.py

        from django.contrib import admin
        from polls.models import Poll
    
        admin.site.register(Poll)
    
  2. 定制管理界面(更改顺序)

     a. 定义一个ModelAdmin类对象  
     b. 把该对象作为注册的第2个参数
    
            class PollAdmin(admin.ModelAdmin):
                fields = ['pub_date', 'question']
    
            admin.site.register(Poll, PollAdmin)
    
  3. 定制管理界面(分组)

    class PollAdmin(admin.ModelAdmin):
        fieldsets = [
            (None,               {'fields': ['question']}),
            ('Date information', {'fields': ['pub_date']}),
        ]
    
  4. 定制管理界面(折叠)

    class PollAdmin(admin.ModelAdmin):
            ...
            ('日期信息', {'fields': ['pub_date'], 'classes': ['collapse']}),
    

增加Choice

  1. 内联方式

    from django.contrib import admin
    from polls.models import Choice, Poll
    
    class ChoiceInline(admin.StackedInline):
        model = Choice
        extra = 3
    
    class PollAdmin(admin.ModelAdmin):
        fieldsets = [
            (None,               {'fields': ['question']}),
            ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
        ]
        inlines = [ChoiceInline]
    
    admin.site.register(Poll, PollAdmin)
    
  2. 表格方式

     class ChoiceInline(admin.TabularInline):
    

定制列表的管理界面

  1. 普通显示多列

    class PollAdmin(admin.ModelAdmin):
        # ...
        list_display = ('question', 'pub_date', 'was_published_recently')
    
  2. 方法设置属性

    was_published_recently.admin_order_field = 'pub_date'
    was_published_recently.boolean = True
    was_published_recently.short_description = '是否最近发布'
    
  3. 增加一个过滤器

    list_filter = ['pub_date']
    
  4. 增加搜索栏

    search_fields = ['question']
    
  5. 日期分层过滤

    date_hierarchy = 'pub_date'
    
  6. 完整的 PollAdmin 类

    class PollAdmin(admin.ModelAdmin):
    
        fieldsets = [
            (None,               {'fields': ['question']}),
            ('日期信息', {'fields': ['pub_date'], 'classes': ['collapse']}),
        ]
        inlines = [ChoiceInline]
        list_display = ('question', 'pub_date', 'was_published_recently')
        list_filter = ['pub_date']
        search_fields = ['question']
        date_hierarchy = 'pub_date'
    

定制个人的项目模版

1.建立模版路径并增加到 settings.py 中

1.1 django 的源文件在哪里?

python -c "
import sys
sys.path = sys.path[1:]
import django
print(django.__path__)"

比如我的 virtualenvs 环境的django 的输出结果就是:

~/.virtualenvs/djtest/local/lib/python2.7/site-packages/django

1.2 建立一个项目模版目录并拷贝模版

在项目目录建立一个模版路径 templates,现在路径结果:

    ~/djtest/mysite
    |---mysite
    |---polls
    |    |---migrations
    |---templates
    |        |---admin

~/.virtualenvs/djtest/local/lib/python2.7/site-packages/django/contrib/admin/templates/admin

cp base_site.html ~/djtest/mysite/templates/admin/

1.3 更改 settings.py,增加模版的搜索路径

TEMPLATE_DIRS = (
    '/home/***/djtest/mysite/templates/'
)

你可能感兴趣的:(django 学习笔记 (二))