Вроде легкие вопросы и ответы знаю правильные, но система считает иначе и правильные ответысчитает неправильными. Приходится выполнть по несколько раз. Это я не правильно делаю или тест так составлен? |
Создание аналога 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.