Пытаюсь написать простую программу и продолжаю получать эту ошибку

#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})