Российский Новый Университет
Опубликован: 25.01.2016 | Доступ: свободный | Студентов: 2234 / 161 | Длительность: 16:40:00
Лекция 4:

Создание аналога Twitter

Представление на основе функций

Обновите файл views.py как показано:

from django.http import HttpResponse
def index(request): if request.method == 'GET':
return HttpResponse('Запрос получен') 
elif request.method == 'POST':
return HttpResponse('Запрос опубликован') 

Обновите файл urls. py, как показано:

from django.conf.urls import patterns, include, url
 from django.contrib import admin 
from tweets import views 
admin.autodiscover()
urlpatterns = patterns (' ',
url(r'A$', views.index, name='index'),
url(r'Aadmin/', include(admin.site.urls)),
)

Запустите сервер разработки командой python manage.py runserver.

Мы увидим ответ: Запрос получен.

Представление на основе классов

Обновите файл views.py как показано:

from django.http import HttpResponse
from django.views.generic import View

class Index(View):
def get(self, request): 
return HttpResponse('Запрос получен')
def post(self, request): 
return HttpResponse('Запрос опубликован')
urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
from tweets.views import Index
admin.autodiscover()
urlpatterns = patterns('',
url(r'^$', Index.as_view()),
url(r'^admin/', include(admin.site.urls)),
)

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

То, что мы отобразили, это просто строка, это не так уж и сложно. Мы создали файл base.html в нашей папке шаблона и будем продвигаться вперед с представлениями на основе классов и отобразим наш файл base.html.

В Django существует более чем один способ отобразить нашу страницу. Мы можем показать нашу страницу, используя любой из этих трех функций: render(), render_to_response() или direct_to_template().Однако давайте сначала посмотрим, какова разница между ними и как мы должны использовать каждую:

  • render_to_response (template [, dictionary] [, context_instance] [, mimetype]): Команда render_to_response является стандартной функцией отображения, и используя RequestContext, мы задаем context_inst ance=RequestContext(request).
  • render(request, template [ , dictionary][, context_instance][, content_type] [, status] [, current_app]). Это новый ярлык для команды render_to_response и он доступен в Django, начиная с версии 1.3. Он автоматически использует RequestContext.
  • (direct_to_template): это общее представление. RequestContext используется автоматически и все параметры context_processor.

Однако следует избегать команды direct_to_template так как общие представления на основе функций являются устаревшими.

Мы выберем второй вариант, функцию render() для рендеринга нашего шаблона base.html.

Следующий шаг — включение каталога шаблона в нашем приложении Django (каталог template, который мы создали с основным файлом под именем base.html). Чтобы включить в шаблон, мы обновим файл settings.py следующим образом:

TEMPLATE_DIRS = (
BASE_DIR + '/templates/'
)
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)

Это определяет каталог шаблонов и инициализирует основные параметры template_loader.

Константин Боталов
Константин Боталов

Вроде легкие вопросы и ответы знаю правильные, но система считает иначе и правильные ответысчитает неправильными. Приходится выполнть по несколько раз. Это я не правильно делаю или тест так составлен?

Владимир Филипенко
Владимир Филипенко

Листинг показывает в 4-ой лекции, что установлен Django 1.8.4. Тут же далее в этой лекции указаны настройки, которые воспринимает Django 1.7 и младше.