Есть ли способ визуализации 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)