Отличительной чертой фреймворка 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)
Мы регистрируем необходимые модели в админ интерфейсе. Перезапустите сервер и вы увидите в админ панели такое:
Как видите вы можете редактировать записи и добавлять новые.
Добавляем:
Правдо круто? Пользуйтесь 😉