Язык шаблонов Django как исправить
Здравствуйте, я пытаюсь создать простое приложение django, но не могу заставить файл index.html распознать переменные, созданные в views.py. Ничего не получается. Возможно, это должно быть как-то настроено в settings.py?
index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p>Hello world {{ name }}</p>
</body>
</html>
views.py:
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
context = {'name' : 'Peter'}
return render(request, 'index.html', context)
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index')
]
Как бы я ни пытался, браузер просто не распознает ничего в {{}}. Он просто оставляет его пустым. Кажется, я уже все перепробовал. Пожалуйста, помогите, я рву на себе волосы.
Вот репозиторий на github, если кому-то интересно взглянуть на него:
https://github.com/Peterhague/stacqato2
Спасибо
Мне кажется, что в операторе рендеринга не хватает косой черты перед index.html. Попробуйте сделать так:
return render(request, '/index.html', context)
В вашем файле 'stacqato/settings.py' я вижу, что вы не добавили ваше приложение в список установленных приложений. Вы должны добавить 'stack.apps.StackConfig' в INSTALLED_APPS в 'stacqato/settings.py'
В вашем файле settings.py, в разделе TEMPLATES, APP_DIRS имеет значение true, поэтому вы должны создать каталог 'stack' в каталоге 'templates' и переместить файл 'index.html' в каталог 'templates/stack'
Я в основном использую представления на основе классов, поэтому в вашем файле views.py это будет выглядеть примерно так:
class IndexView(generic.View):
template_name = 'stack/index.html'
context = {'name': 'Peter'}
def get(self, request, *args, **kwargs):
return render(request, self.template_name, context)
В вашем urls.py это переводится как:
path('', views.IndexView.as_view(), name='index'),
Вы не упомянули приложение стека в установленных приложениях