django 学习笔记 (二)

2、Writing your first Django app, part 2

激活管理站点

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

  2. 使用south管理数据库python

    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/django

增长 poll

  1. 增长 polls/admin.py服务器

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

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

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

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

增长Choice

  1. 内联方式code

    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. 表格方式orm

    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/'
)
相关文章
相关标签/搜索