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/'
)
相關文章
相關標籤/搜索