【发布时间】:2020-12-26 12:29:36
【问题描述】:
我是编码新手,我正在尝试做我的第一个项目。我想制作一个电影搜索应用程序,但它总是给我错误。我得到 NameError: name 'movie' is not defined 和 UndefinedError: object has no atribute "plot"。我该如何解决这些错误?如果没有情节属性,我可能应该提出一个条件?
我认为这不是最好的做事方式,所以我会很感激任何建议。
这是我的代码:
from flask import Flask, render_template, request
from imdb import IMDb
app = Flask(__name__)
@app.route("/", methods=["POST", "GET"])
def home():
global movie, movie_two, movie_three
if request.method == "POST":
instance = IMDb()
search = request.form.get("name")
movie = instance.search_movie(search)
movie_three = []
for i in range(len(movie)):
id_number = movie[i].movieID
movie_two = instance.get_movie(id_number)
movie_three.append(movie_two)
return render_template("home.html", movie=movie, movie_two=movie_two, movie_three=movie_three)
if __name__ == "__main__":
app.run(debug=True)
home.html
{% extends "base.html" %}
{% block content%}
<div align="center" >
<h1>Something To Watch</h1>
<div class="container">
<form class="search" action="{{url_for('home')}}" method="post">
<input type="search" placeholder="Type here..." name="name" >
<button type="submit" value="submit">Search</button>
</form>
</div>
</div>
{% for m in movie_three %}
<div class="row">
<div align="center" class="card" style="width: 15rem;">
<img class="card-img-top" src={{m["cover"]}} alt="Card image cap">
<div class="card-body">
<h5 class="card-title">{{m["title"]}}</h5>
<h6 class="card-subtitle mb-2 text-muted">{{m["year"]}}</h6>
<h6 class="card-subtitle mb-2 text-muted">{{m["kind"]}} - {{m["genres"]}}</h6>
<h6 class="card-subtitle mb-2 text-muted">{{m["rating"]}}</h6>
<p class="card-text">{{m["plot"][0]}}</p>
<a href=# class="card-link">Go to IMDb</a>
<a href="{{url_for('home')}}" class="card-link">Homepage</a>
</div>
</div>
</div>
{%endfor%}
{% endblock %}
错误:
File "C:\Users\korisnik\PycharmProjects\pythonProject\venv\Lib\site-packages\flask\app.py", line 2464, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\korisnik\PycharmProjects\pythonProject\venv\Lib\site-packages\flask\app.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\korisnik\PycharmProjects\pythonProject\venv\Lib\site-packages\flask\app.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\korisnik\PycharmProjects\pythonProject\venv\Lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\Users\korisnik\PycharmProjects\pythonProject\venv\Lib\site-packages\flask\app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\korisnik\PycharmProjects\pythonProject\venv\Lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\korisnik\PycharmProjects\pythonProject\venv\Lib\site-packages\flask\app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\korisnik\PycharmProjects\pythonProject\venv\Lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\Users\korisnik\PycharmProjects\pythonProject\venv\Lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\korisnik\PycharmProjects\pythonProject\venv\Lib\site-packages\flask\app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\korisnik\PycharmProjects\pythonProject\app.py", line 36, in home
return render_template("home.html", movie=movie, movie_two=movie_two, movie_three=movie_three)
NameError: name 'movie' is not defined
【问题讨论】:
-
如果请求方式不是POST,那么返回的所有参数都是未定义的。