-1

I have defined a function which prints the movie recommendation based on the input movie.

app=Flask(__name__)
@app.route("/")
def recommend(movie_title):
    print("for movie({})".format(movie_title))
    print("Top 10 movies recommended are")
    movie_title_rating=final_movie_table["{}".format(movie_title)]
    related_movies=final_movie_table.corrwith(movie_title_rating)
    corrwith_movie= pd.DataFrame(related_movies, columns=["Correlation"])
    corrwith_movie.dropna(inplace=True)
    corrwith_movie=corrwith_movie.sort_values("Correlation", ascending=False)
    corrwith_movie=corrwith_movie.join(mean_rating["rating count"])
    print(corrwith_movie[corrwith_movie["rating count"]> 50].sort_values("Correlation", ascending=False))
app.run(debug=True)

The function runs just fine

but when I run the above code using flask to run my API the following error pops up

 * Serving Flask app "__main__" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Restarting with windowsapi reloader
An exception has occurred, use %tb to see the full traceback.

It would be really helpful if some one could help me out with this. Thank you!

davidism
  • 121,510
  • 29
  • 395
  • 339

1 Answers1

2

In your function, you do not define the variable.

@app.route("/")
def recommend(movie_title):

Where is movie_title comming from?

You need to pass the information to the server, And then use it in the function. You have two option: Either you do that in the URL: @app.route("/<movie_title>") or you give the name in a json attached to the request:

@app.route("/",methods=['POST'])
def recommend():
    movie_title = request.json['title'] #if "title' contains the name
Frayal
  • 2,117
  • 11
  • 17