Есть ли способ визуализации html-страницы без модели просмотра?

Есть ли способ визуализации html-страницы без наличия модели представления в django, если страница будет отображать только статический html?

Кроме того, я могу перенаправить на html-страницу вместо URL-адреса? Например, вместо этого:

return HttpResponseRedirect('form/success/')

могу ли я сделать это:

return HttpResponseRedirect('success.html')

?

Ответы

Ответ 1

Для статического HTML вы можете использовать приложение Flatpages.

Вы также можете обслуживать отображаемые шаблоны (которые могут содержать только статические HTML), но вам потребуется представление:

from django.shortcuts import render_to_response
def some_view(request):
   return render_to_response('sometemplate.html')

О перенаправлении, в основном вы не можете перенаправить на страницу HTML, просто указав имя файла, даже если он был статически обслуживается веб-сервером, вы все равно будете использовать URL-адрес, указывающий на этот файл.

Ответ 2

Вы можете отобразить шаблон без представления, используя общий вид direct_to_template.

Перенаправление на success.html - это не путь в django, поскольку success.html не имеет связанного URL. Вам всегда нужно привязать шаблон к URL-адресу через представление (direct_to_template - это представление, которое получает все свои аргументы из conf в urls.py, но оно все еще является представлением)

Ответ 3

direct_to_template больше не работает в Django 1.8. Вот как это сделать в 1.8, в urls.py:

from django.views.generic import TemplateView

urlpatterns = [
    url(r'^$', TemplateView.as_view(template_name="your_static.html"), name='whatever'),
]

Ответ 4

Я уверен, что это не то, что OP хотел сделать, но если кто-то хочет что-то сделать без представления, (для отправки электронной почты или добавления к другому html-коду), вы можете использовать это:

from django.template.loader import render_to_string
html = render_to_string('template.html', params)