#python #django #django-forms #django-views
#python #django #django-формы #django-просмотры #django-forms
Вопрос:
Ошибка: TemplateDoesNotExist в /1
forms.py
class SpotifyForm(forms.Form):
SpotifyForm = forms.CharField(label= "Spotify Form")
views.py
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.views import View
from .forms import SpotifyForm
from .api import SpotifyAPI
from .forms import ClientId
class Search(View):
form = SpotifyForm
initial = {"initial" : "Error"}
template_name = "homepage.html"
context = {"form": form}
def get(self, request, *args, **kwargs):
form = self.form(initial = self.initial)
return render(request , self.template_name, self.context)
urls.py
from django.urls import path
from .views import Search
urlpatterns = [
path("1" , Search.as_view())
]
каталог шаблонов: spotify_client spotify_calls spotify_calls templates
urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path("" , include("spotify_calls.urls"))
]
По сути, все, что я делаю, это пытаюсь получить доступ к Spotify API в views.py (еще не сделано), просто хотел отрендерить html, чтобы хотя бы посмотреть, будет ли отображаться форма, но ничего не сделал. Кроме того, все рекомендации с представлениями на основе классов будут оценены, поскольку это мой первый раз
Комментарии:
1. Итак, у вас действительно есть
homepage.html
в этом каталоге шаблонов?2. Да, у меня есть один там.
3. Попробуйте поместить ее туда напрямую, редактор должен показать вам, если это неверный путь.
render(request , "homepage.html", self.context)
, попробуйте изменить его на:render(request , "spotify_calls/homepage.html", self.context)
Ответ №1:
согласно документам Django :
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.views import View
from .forms import MyForm
class MyFormView(View):
form_class = MyForm
initial = {'key': 'value'}
template_name = 'form_template.html'
def get(self, request, *args, **kwargs):
form = self.form_class(initial=self.initial)
return render(request, self.template_name, {'form': form})
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
# <process form cleaned data>
return HttpResponseRedirect('/success/')
return render(request, self.template_name, {'form': form})