Как вернуть статический HTML-файл как ответ в Django?
Я не понял, как я могу представить сайт с чистым HTML-кодом и / или HTML + JavaScript + CSS.
Я попытался загрузить HTML-файл, который просто говорит: Hello World.
Я знаю, что могу сделать это и с Django, но позже я хочу отобразить свой сайт с помощью CSS+JavaScript+HTML.
В файле views я запускаю этот код:
# Create your views here.
from django.http import HttpResponse
from django.template import Context, loader
def index(request):
template = loader.get_template("app/index.html")
return HttpResponse(template.render)
Но единственное, что показывает веб-сайт:
>
4 ответа
Вы не звоните render
метод есть, а ты?
Для сравнения:
template.render
template.render()
Если ваш файл не шаблон django, а простой HTML-файл, это самый простой способ:
from django.shortcuts import render_to_response
def index (request):
return render_to_response('app/index.html')
Если ваши CSS и JS-файлы являются статическими, не используйте Django для их обслуживания и не используйте их как статические файлы.
Для вашего html вы можете сделать то же самое, если это просто какой-то фиксированный файл, который не будет иметь динамического содержимого. Вы также можете использовать общие представления с TemplateView, просто добавьте такую строку в ваш urls.py
:
url(r'^path/to/url', TemplateView.as_view(template_name='index.html')),
Используя HttpResponse
Вы можете отправлять только данные, если вы хотите HTML-файл, то вы должны использовать render
или же render_to_response
следующими способами...
from django.shortcuts import render
def index(request):
return render(request, 'app/index.html')
или же
from django.shortcuts import render_to_response
def index (request):
return render_to_response('app/index.html')
Во-первых, вам нужно сделать некоторые настройки для шаблонов:
Создайте папку "templates" в корневом каталоге, где manage.py находится после того, как вы создали свой проект. Затем перейдите в settings.py, в разделе ШАБЛОНЫ введите каталог с папкой шаблонов. Жесткое кодирование не рекомендуется, потому что если вы отправите свой проект своему другу, ваш друг не сможет его запустить. Должно быть так:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,"templates")],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
Предполагая, что у вас есть home.html и about.html в папке шаблонов:
urls.py
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('about/',views.aboutview),
path('',views.homeview),
]
views.py
from django.http import HttpResponse
from django.shortcuts import render
def aboutview(request):
return render(request,"home.html")
def homeview(request):
return render(request,"about.html")
from django.http import HttpResponse
from django.template import loader
def index(request):
template=loader.get_template('app/index.html')
return HttpResponse(template)