Административный интерфейс django. Создаём админку для сайта в 2 счёта

Отличительной чертой фреймворка django является его способность создавать кроме сайта, ещё и админку к нему! 

Если вы писали когданибуть админку, то наверняка этот процесс вас не особо обрадовал. В этом нет ничего интересного. Пишете обычные обработчики форм и вывод данных с возможностью их редактирования.. аутентификация и тд.. ничего нового.. 

Именно поэтому django даёт возможность содать админку с минимум написанного кода.

Приступим. 

Допустим у нас уже есть некое django приложение.

Убедимся, что в settings.py есть такие строки:

 

MIDDLEWARE_CLASSES = (

    ‘django.middleware.common.CommonMiddleware’,

    ‘django.contrib.sessions.middleware.SessionMiddleware’,

    ‘django.contrib.auth.middleware.AuthenticationMiddleware’,

    ‘django.middleware.locale.LocaleMiddleware’,  # для локализации

)

 

И такое:

 

INSTALLED_APPS = (

    ‘django.contrib.auth’,

    ‘django.contrib.contenttypes’,

    ‘django.contrib.sessions’,

    ‘django.contrib.admin’,

)

Теперь идём в файл urls.py и раскоментируем строки, приведя файл к подобному виду:

 

from django.contrib import admin

admin.autodiscover()


urlpatterns = patterns(»,

     (r’^admin/’, include(admin.site.urls)),

)

 

После этих изменений вы уже можете увидить административный интерфейс по адресу https://127.0.0.1:8000/admin/

Давайте дадим возможность создавать и редактировать типы данных используемые в приложении django. 

Их мы определили в виде модели данных в файле models.py

Возьмём модели из книги django:

 

from django.db import models


class Publisher(models.Model):

    name = models.CharField(max_length=30)

    address = models.CharField(max_length=50)

    city = models.CharField(max_length=60)

    state_province = models.CharField(max_length=30)

    country = models.CharField(max_length=50)

    website = models.URLField()


    def __unicode__(self):

        return self.name


class Author(models.Model):

    salutation = models.CharField(max_length=10)

    first_name = models.CharField(max_length=30)

    last_name = models.CharField(max_length=40)

    email = models.EmailField()

    headshot = models.ImageField(upload_to=’/tmp’)


    def __unicode__(self):

        return ‘%s %s’ % (self.first_name, self.last_name)


class Book(models.Model):

    title = models.CharField(max_length=100)

    authors = models.ManyToManyField(Author)

    publisher = models.ForeignKey(Publisher)

    publication_date = models.DateField()


    def __unicode__(self):

        return self.title

 

Для доступа из админ панели к ним, следует создать файл admin.py в папке с приложением такого содержания:

 

from django.contrib import admin

from mysite.gigaapp.models import Publisher, Author, Book


admin.site.register(Publisher)

admin.site.register(Author)

admin.site.register(Book)

 

Мы регистрируем необходимые модели в админ интерфейсе. Перезапустите сервер и вы увидите в админ панели такое:

Как видите вы можете редактировать записи и добавлять новые.

Добавляем:

Правдо круто? Пользуйтесь 😉

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий