You need to enable JavaScript to run this app. Python API调用如何嵌入动态变量?Django搜索栏开发问题
优惠活动
大模型
产品
解决方案
定价
更多

Python API调用如何嵌入动态变量?Django搜索栏开发问题

Django 搜索栏嵌入OMDB API的正确实现方式

现有代码的核心问题

  • 普通Python字符串中的{movie_title}不会自动替换为实际变量值,会被当成字面文本直接传给API,根本无法匹配到对应电影
  • 代码中出现的&是HTML页面的转义字符,直接写在Python请求URL中会导致API端参数解析错误:API会把amp;t当成独立参数名,完全无法识别你传递的电影标题搜索条件,正确的参数分隔符为普通&
  • 手动硬拼接URL时,如果搜索内容包含空格、特殊符号,会因为未做URL编码导致请求失败

推荐实现方案

优先使用requests库自带的params参数传递请求参数,该方法会自动完成URL编码、参数拼接,避免手动拼接的各类问题,参考代码:

import requests
from django.shortcuts import render

def searchbar(request):
    search_result = None
    if request.method == "GET":
        movie_title = request.GET.get("movie_title")
        # 判空处理,避免无搜索关键词时发送无效API请求
        if movie_title:
            api_response = requests.get(
                "http://www.omdbapi.com/",
                params={
                    "apikey": "9a63b7fd",
                    "t": movie_title
                }
            )
            search_result = api_response.json()
    return render(request, "search_result.html", {"searched_movie": search_result})

手动拼接字符串的实现方式(不推荐)

如果需要手动拼接完整URL字符串,必须使用f-string开启变量插值,同时修正转义字符问题:

if movie_title:
    searched_movie = requests.get(
        f'http://www.omdbapi.com/?apikey=9a63b7fd&t={movie_title}'
    )

注意:该写法无法自动处理搜索词中的特殊字符,遇到带空格、标点的搜索内容时,可能出现API返回无效结果的问题


内容的提问来源于stack exchange,提问作者Almuntasir Abir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.04 15:15:03