django学習ノート(二)

4103 ワード

二、Writing your first Django app,part 2
管理サイトのアクティブ化
  • settings.pyのINSTALLED_をキャンセルAPPS中admin注釈'django.contrib.admin',
  • south管理データベース
    python manage.py schemamigration polls --auto
    python manage.py migrate polls
    
  • を使用
  • 設置mysite/urls.py
    from django.contrib import admin
    admin.autodiscover()
    
    urlpatterns = patterns('',
        ...
        url(r'^admin/', include(admin.site.urls)),
    
  • 起動サーバpython manage.py runserverアクセスアドレスhttp://127.0.0.1:8000/admin/

  • ポールを追加
  • polls/admin.py
        from django.contrib import admin
        from polls.models import Poll
    
        admin.site.register(Poll)
    
  • を追加
  • カスタム管理インタフェース(順序変更)
     a.     ModelAdmin     
     b.           2   
    
            class PollAdmin(admin.ModelAdmin):
                fields = ['pub_date', 'question']
    
            admin.site.register(Poll, PollAdmin)
    
  • カスタム管理インタフェース(パケット)
    class PollAdmin(admin.ModelAdmin):
        fieldsets = [
            (None,               {'fields': ['question']}),
            ('Date information', {'fields': ['pub_date']}),
        ]
    
  • カスタム管理インタフェース(折りたたみ)
    class PollAdmin(admin.ModelAdmin):
            ...
            ('    ', {'fields': ['pub_date'], 'classes': ['collapse']}),
    
  • Choiceを追加
  • インライン方式
    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)
    
  • 表方式
     class ChoiceInline(admin.TabularInline):
    
  • カスタムリストの管理インタフェース
  • 通常表示複数列
    class PollAdmin(admin.ModelAdmin):
        # ...
        list_display = ('question', 'pub_date', 'was_published_recently')
    
  • メソッド設定属性
    was_published_recently.admin_order_field = 'pub_date'
    was_published_recently.boolean = True
    was_published_recently.short_description = '      '
    
  • フィルタ
    list_filter = ['pub_date']
    
  • を追加
  • 検索欄
    search_fields = ['question']
    
  • を追加
  • 日付階層フィルタ
    date_hierarchy = 'pub_date'
    
  • 完全な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/'
    )