В Django : Почему ничего не происходит, когда я пытаюсь подключиться к YouTube API и найти 10 лучших видео на любую тему

Я только что начал свое первое приложение на Django, следуя видео на YouTube. Приложение представляет собой приборную панель для студентов с 8 инструментами и функциями, помогающими студенту делать заметки , искать помощь, сохранять книги и т.д.

Когда я следую шагам, я застреваю в разделе поиска YouTube, но не со стороны администратора, а со стороны фактического шаблона YouTube, который имеет кризисную форму и кнопку поиска.

Программа предназначена для поиска 10 лучших видео о чем-либо в результате и показа в том же шаблоне, который я создал (youtube.html) и некоторой информации, такой как название, описание, продолжительность и т.д.

когда я пытаюсь нажать на кнопку поиска, ничего не происходит.


#Это страница view.py в приложении dashboard :

from typing import Generic
from django.http import HttpResponseRedirect
from django.shortcuts import redirect, render
from django.shortcuts import render
from . forms import *
from django.contrib import messages
from django.urls import reverse
from django.views import generic
from django.views.generic.detail import DetailView
from youtubesearchpython import VideosSearch


# the youtube function 

def youtube(request):
    if request.method == "POST":
        form = DashboardForm(request.POST)
        text = request.POST['text']
        video = VideosSearch(text,limit=10)
        result_list = []
        for i in video.result()['result']:
            result_dict = {
                'input':text,
                'title':i['title'],
                'duration':i['duration'],
                'thumbnail':i['thumbnails'][0]['url'],
                'channel':i['channel']['name'],
                'link':i['link'],
                'views':i['viewCount']['short'],
                'published':i['publishedTime']
            }
            desc =''
            if i['descriptionSnippet']:
                for j in i['descriptionSnippet']:
                    desc += j['text']
            result_dict['description'] = desc
            result_list.append(result_dict)
            context={
                'form':form,
                'result':result_list
            }
        return render(request,'dashboard/youtube.html',context)
    else:
        form = DashboardForm() 
    context = {'form':form} 
    return render(request,"dashboard/youtube.html",context)

и ... urls.py

from django.urls import path
from . import views


urlpatterns = [
    path('', views.home, name='home'),


    path('notes/', views.notes, name="notes"),
    #path('thanks/', views.thanks, name='thanks')
    path('delete_note/<int:pk>',views.delete_note,name="delete-note"), 
    path('notes_detail/<int:pk>',views.NotesDetailView.as_view(),name="notes-detail"),


    path('homework',views.homework,name="homework"),
    path('update_homework/<int:pk>',views.update_homework,name="update-homework"),
    path('delete_homework/<int:pk>',views.delete_homework,name="delete-homework"),

    path('youtube/',views.youtube,name="youtube")
]

а это страница youtube.html в приложении dashboard > папка template > папка dashboard :

{% extends 'dashboard/base.html' %} 
{% load static %} 
{% block content %}

<section class='text-center container'>
    <h2>Search Videos in Youtube</h2>
    <p>search videos and select any video to open in youtube</p>
    <form action="" method="post">
        {% csrf_token %}
        {{form}}
        <input class="btn btn-danger" type="submit" value="Submit">
    </form><br>
{% for result in results %}
    <a href="{{result.link}}" target="_blank">
        <div class="card">
            <div class="card-header">
                <div class="row">
                    <div class="col-md-5">
                        <img class="img-fluid" src="{{result.thumbnail}}" alt="">

                    </div>
                    <div class="col-md-7">
                        <h3 class="p-0 m-0">{{result.title}}</h3>
                        <b>
                            <u>
                                <h5 class="p-0 m-0">{{result.channel}}</h5>
                            </u>
                        </b>
                        <h6 class="p-0 m-1">{{result.description}}</h6>
                        <b>
                            <h6 class="ml-0 mt-3">{{result.duration}}</h6>
                            <h6 class="ml-0 mt-1">{{result.views}}</h6>
                            <h6 class="ml-0 mt-1">{{result.published}}</h6>
                        </b>
                    </div>
                </div>
            </div>
        </div>
    </a>
    {% endfor %}
    <br>
</section>

{% endblock content %}

так, этот файл models.py тоже

from django.db import models
from django.contrib.auth.models import User
# Create your models here.


class Notes(models.Model):
 user = models.ForeignKey(User, on_delete=models.CASCADE)
 title = models.CharField(max_length=200) 
 description = models.TextField() 
 def __str__(self):
   return self.title 
 class Meta:
   verbose_name = "notes" 
   verbose_name_plural = "notes"

в случае, если проблема не здесь, пожалуйста, загляните в файл forms.py

from dataclasses import fields
from django import forms
from . models import *

class NotesForm(forms.ModelForm):
  class Meta:
    model = Notes 
    fields = ['title', 'description']


class DateInput(forms.DateInput):
  input_type = 'date'

class HomeworkForm(forms.ModelForm):
  class Meta:
    model = Homework
    widgets = {'due':DateInput()}
    fields = ['subject','title', 'description', 'due', 'is_finished']


class DashboardForm(forms.Form):
  text = forms.CharField(max_length=100, label="Enter your search : ")

Вернуться на верх