Фото-галерея Django(2): Движок и админка

категория: Django
Теперь будем писать urls и админку, вьюшки я не создавал, так как ничего особенного программировать не нужно, а просто выводить информацию из базы данных. В основном urls.py подключаем ссылки нашего приложения с галерей "photos", чтоб не было все на одной куче:
url(r'^gallery/', include('photos.urls')),
Теперь прописываем в urls.py приложения галереи ссылки на страницу альбомов и страницу фотографий в альбоме:
from django.conf.urls import patterns, url
from django.views.generic import ListView, DetailView
from photos.models import Album, Photo
#
urlpatterns = patterns('',
  url(r'^$', ListView.as_view(
    model=Album,
    context_object_name='my_album',
    template_name='photos/album.html'),
    name='gallery'
    ),
  url(r'^(?P<slug>[\w-]+)/$', DetailView.as_view(
    model=Album,
    context_object_name='photos',
    template_name='photos/photo.html'),
    name='photos'
    ),
)
Тут ничего нового, подробно описывать не буду, если что не понятно спрашивайте. Теперь подключим админку к нашим моделям, создаем admin.py в каталоге приложения, и пишем стандартный код, ничем особо не отличающийся от других admin.py:
from django.contrib import admin
from photos.models import Album, Photo
#
#Для альбома
class AlbumAdmin(admin.ModelAdmin):
    fieldsets = [
        (None, {'fields': ['title', 'slug', 'img']})
    ]
    list_display = ['title', 'slug']
    prepopulated_fields = {'slug': ['title']}
    ordering = ['title']
#
#Для фотографии
class PhotoAdmin(admin.ModelAdmin):
    fieldsets = [
        (None, {"fields": ['title', 'album', 'img']})
    ]
    list_display = ['title', 'album']
    ordering = ['title']
#
#Регистрируем
admin.site.register(Album, AlbumAdmin)
admin.site.register(Photo, PhotoAdmin)
Осталось написать шаблоны album.html, photo.html и завернуть это все в "цветную" обертку CSS и JS, чтоб заказчик клацал и все "летало")). Этим в следующей статье и займемся.


blog comments powered by Disqus