首页 > 解决方案 > Django -- 为 TMDB API 请求将函数视图转换为基于类的视图

问题描述

我正在使用函数视图使用tmdb api呈现输出,
我熟悉基于类的视图(TemplateView、ListView、CreateView 和 UpdateView)的基础知识。

示例输出 在此处输入图像描述

视图.py

from django.shortcuts import render

import requests
# Create your views here.

def index(request):
# Query API with user input 
    if 'movie' in request.GET:
        api_key = 'api'
        id = request.GET['movie']
        url = 'https://api.themoviedb.org/3/search/movie?api_key={}&language=en-US&query={}&include_adult=false'
        response = requests.get(url.format(api_key,id))


         
        
        # successful request
        if response.status_code == 200:

            # Parse json output for key value pairs 
            tmdb = response.json()

            # backdrop image -- tmdb for each movie
            backdrop_path = tmdb['results'][0]['backdrop_path']
            url_backdrop = 'https://image.tmdb.org/t/p/original'+backdrop_path 

            # poster image -- tmdb for each movie
            poster_path = tmdb['results'][0]['poster_path']
            url_poster = 'https://image.tmdb.org/t/p/original'+poster_path     

            context = {
                'title': tmdb['results'][0]['original_title'],
                'overview': tmdb['results'][0]['overview'],
                'release_date': tmdb['results'][0]['release_date'],
                'vote_average': tmdb['results'][0]['vote_average'],
                'vote_count': tmdb['results'][0]['vote_count'],
                'backdrop_path' : tmdb['results'][0]['backdrop_path'],
                'backdrop' : url_backdrop,
                'poster' : url_poster
                }
            



            return render(request, 'home.html', {'context': context}) 
        

        else: # returns homepage if invalid name is given in form
                return render(request, 'home.html')

    else: # Homepage without GET request
        return render(request, 'home.html')

标签: djangodjango-views

解决方案


推荐阅读