Как вернуть статический 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)

Но единственное, что отображается на веб-сайте:

<Р →

Ответ 1

Вы не вызываете метод render, вы?

Для сравнения:

template.render

template.render()

Ответ 2

Если ваш файл не является шаблоном django, а простым файлом html, это самый простой способ:

from django.shortcuts import render_to_response

def index (request):
    return render_to_response('app/index.html')

Ответ 3

Если ваши файлы CSS и JS являются статическими, не используйте Django для их обслуживания, или служат им как статические файлы

Для вашего html вы можете сделать то же самое, если это всего лишь фиксированный файл, который не будет иметь никакого динамического содержимого. Вы также можете использовать общие представления с TemplateView, просто добавьте такую ​​строку в свой urls.py:

    url(r'^path/to/url', TemplateView.as_view(template_name='index.html')),

Ответ 4

Используя 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')

Ответ 5

from django.http import HttpResponse

from django.template import loader

def index(request):

    template=loader.get_template('app/index.html')

    return HttpResponse(template)

Ответ 6

Во-первых, вам нужно сделать некоторые настройки для шаблонов:

Создайте папку "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")