Latest web development tutorials

Средства управления администратора Django

Django предоставляет веб-инструменты управления.

Django инструменты автоматизированного управления являются частью django.contrib. Вы можете увидеть его в settings.py в INSTALLED_APPS пунктов:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)

django.contrib огромный набор функций, который является частью кодовой базы Django.


Средство управления активации

Мы обычно устанавливается в urls.py автоматически на момент создания проекта, нам нужно только удалить комментарии.

Элементы конфигурации заключаются в следующем:

from django.contrib import admin
admin.autodiscover()

# And include this URLpattern...
urlpatterns = patterns('',
    # ...
    (r'^admin/', include(admin.site.urls)),
    # ...
)

Когда все настроено, инструменты управления Django может быть запущена.


Использование средств управления

Запустите сервер разработки, а затем получить доступ к браузеру: HTTP: // YourSite: 8000 / администратор /, чтобы получить следующий экран:

Вы можете командовать Python manage.py createsuperuser создать суперпользователя, следующим образом :

# python manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.
[root@solar HelloWorld]#

После ввода имени пользователя и пароля входа, интерфейс выглядит следующим образом:

Для того, чтобы сделать интерфейс администратора для управления модели данных, нам необходимо зарегистрировать модель данных для администратора. Например, мы были созданы до TestModel модели испытания. Изменить TestModel / admin.py:

from django.contrib import admin
from TestModel.models import Test

# Register your models here.
admin.site.register(Test)

Вы можете увидеть таблицу обновления данных TestModel:


Сложные модели

Мощные страницы администрирования, в полной мере способна обрабатывать более сложные модели данных.

Первое увеличение более сложных моделей данных TestModel / models.py в:

from django.db import models

# Create your models here.
class Contact(models.Model):
    name   = models.CharField(max_length=200)
    age    = models.IntegerField(default=0)
    email  = models.EmailField()
    def __unicode__(self):
        return self.name

class Tag(models.Model):
    contact = models.ForeignKey(Contact)
    name    = models.CharField(max_length=50)
    def __unicode__(self):
        return self.name

Есть две таблицы. Как связаться с Tag на внешний ключ. Контакт может соответствовать множеству тегов.

Мы также можем увидеть много атрибутов типа не видели раньше, такие как IntegerField хранить целое число.

В TestModel / admin.py зарегистрировать несколько моделей и шоу:

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
admin.site.register([Test, Contact, Tag])

Обновить страницу администрирования, показывают следующие результаты:

В приведенных выше инструментов управления мы можем моделировать сложные операции.


Пользовательские формы

Мы можем настроить страницы администрирования, вместо страницы по умолчанию. Например, выше "добавить" страницу. Мы хотим показать только имя и адрес электронной секции. Изменить TestModel / admin.py:

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class ContactAdmin(admin.ModelAdmin):
    fields = ('name', 'email')

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test, Tag])

ContactAdmin выше кода определяет класс, чтобы проиллюстрировать страницу дисплея управления форматом.

Внутри полей свойство определяет поля, которые будут отображаться.

Как таковой данных модель соответствует Контакты наш знак, когда они должны быть зарегистрированы вместе. Дисплей выглядит следующим образом:

Мы также можем блокировать поля ввода, каждое поле может также определить свой собственный формат. Изменение TestModel / admin.py следующим образом:

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class ContactAdmin(admin.ModelAdmin):
    fieldsets = (
        ['Main',{
            'fields':('name','email'),
        }],
        ['Advance',{
            'classes': ('collapse',), # CSS
            'fields': ('age',),
        }]
    )

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test, Tag])

Выше раздел делится на две части, основные и Advance. классы описал его в разделе Формат CSS. Здесь, пусть Advance частично скрыты:

Advance Следующий раздел имеет кнопку Показать для расширения, расширенную нажмите Скрыть, чтобы скрыть, как показано ниже:


Инлайн (Инлайн) дисплей

Как связаться с Tag выше внешних ключей, так что есть внешняя ссылка отношения.

На дисплее страницы по умолчанию, два разделенных, не в состоянии отразить отношения субординации. Мы можем использовать дисплей встроенный, поэтому отображается тег прикреплен к странице Контакт редактирования.

Изменить TestModel / admin.py:

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class TagInline(admin.TabularInline):
    model = Tag

class ContactAdmin(admin.ModelAdmin):
    inlines = [TagInline]  # Inline
    fieldsets = (
        ['Main',{
            'fields':('name','email'),
        }],
        ['Advance',{
            'classes': ('collapse',),
            'fields': ('age',),
        }]

    )

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test])

Дисплей выглядит следующим образом:


Отображает список страницы

Введите номер в контактных записей, списка контактов страница выглядит следующим образом:

Мы также можем настроить отображение страницы, например, отображения нескольких столбцов в списке, просто добавьте list_display недвижимость в ContactAdmin в:

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class ContactAdmin(admin.ModelAdmin):
    list_display = ('name','age', 'email') # list

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test, Tag])

Обновление отображения страницы следующим образом:

Поиск возможностей при управлении большим числом записей очень, мы можем использовать строку поиска, чтобы увеличить search_fields страницу для списка:

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class ContactAdmin(admin.ModelAdmin):
    list_display = ('name','age', 'email') 
    search_fields = ('name',)

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test])

В этом примере мы ищем имя для w3cschool.cc (доменное имя сайта), показывают следующие результаты:

Инструменты Django администратора для управления Есть много полезных функций, заинтересованные студенты могут обучаться в глубине следующей.