20 сентября 2016 г. 3:03

124

Простое приложение на Django.Instablog.Часть 3.

Сейчас реализуем загрузку постов пользователей. Создадим вьюху , которая наследуется от CreateView.

Все стандартно , но единственное мы переопределили метод form_valid, так как нам надо указать автора , который добавляет пост. Также мы указали поля из модели , которые пользователь должен заполнить при добавлении поста. Это сама фотография и описание к ней. Шаблон будет выглядеть вот таким образом.

Также мы напишем вьюху , которая будет отдельно выводить пост.

Мы могли бы сразу добавить в правило в instablog/urls.py , но это плохая практика , так как в нашем проекте будет много приложений и если все правила будем писать в одном файле , то мы просто запутаемся

Поэтому хорошей практикой считается создание внутри каждого приложения файла urls.py со своими правилами , а потом этот файл мы подключим в главном файле instablog/urls.py


from django.conf import urls

from .views import PhotoListView

app_name = 'blog'

urlpatterns = [
    urls.url(r'^$', PhotoListView.as_view(), name='photo-list'),
]

Теперь мы подключаем в главной

from django.conf.urls import url
from django.contrib import admin
from django.conf.urls import url, include

urlpatterns = [
    url(r'^blog/', include('blog.urls')),
    url(r'^admin/', admin.site.urls),

]

Django по умолчанию нам подключила админку,а мы свою очередь добавили url(r'^blog/', include('blog.urls')),

Теперь мы добавим шаблон, куда будем выводить список фотографий. Так как мы решили применять хорошие практики в нашем проекте , то добавим внутрь приложения blog папку templates/blog/ Так как по умолчанию , PhotoListView будет искать файл в качестве шаблона под названием photo_list.html , то мы создадим такой файл.


Instablog

{% for photo in photos %}
    
{{ photo }}
{% endfor %}

Теперь при переходе по адресу 127.0.0.1:8000/blog/ мы увидим фотографии с их названием. Названия мы увидим , но фотографий нет. Для этого нам нужно в фвйл instablog/urls.py добавить следующую строчку


from django.conf.urls import url, include
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^blog/', include('blog.urls')),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


Заключение

На этом все. Мы реализовали вывод постов используя вьюху ListView. Мы для этого даже запрос не написали . Все было сделано за нас. Так как мы следуем хорошим манерам , то мы создали файл url.py в нашем приложении и прописали правила для доступа к нашим постам. Ну и написали небольшой шаблон для вывода постов.

comments powered by Disqus