В 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 : ")