実現したいこと
楽天API を使ってwebアプリをpythonのflaskで実装したいです
楽天レシピカテゴリ別ランキングAPIというものを使いウェブアプリを作ろうとしています。ボタンを押すとランダムに今日のご飯メニューを提示してくれるといったものを想像しています。(今回は豚肉料理に絞りたいです。)
flaskでできるかなと思い考えて行っていたのですが、ボタンを押した後画面を転移させ、apiをたたき画面に反映させるのかがわからずにいます。htmlのformタグを使いpythonのファイルと紐づけさせたらいいのではと思っているのですが、書き方がわからず困っています。ちがうのでしょうか。randomモジュールもどこにどのように書けばよいのかわかりません。どなたか教えていただけないでしょうか。
2・21 編集後
該当のソースコード views.py
from flask import Flask, request, render_template import main # アプリ生成 app = Flask(__name__) # ルーティング @app.route("/") def form(): return render_template('form.html') @app.route("/summon", methods=['GET', 'POST']) def summon(): if request.method == 'POST': api = main.api() return render_template('summon.html', data=api) if __name__ == "__main__": app.run(debug=True)
該当のソースコード main.py
import requests # urlの作成 def api(): REQUESTS_URL = 'https://app.rakuten.co.jp/services/api/Recipe/CategoryRanking/20170426' APP_ID = '' # 簡単豚肉料理に絞った範囲 item_parameters = { 'applicationId': APP_ID, 'format':'json', 'formatVersion': 2, 'categoryId': '36-494', 'elements': 'recipeTitle,recipeUrl,mediumImageUrl,recipeIndication' } # jsonデータの取得 res = requests.get(REQUESTS_URL, item_parameters) result = res.json() return result
該当のソースコード form.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title></title> </head> <body> <h1></h1> <br> <form action="/summon.html" method='POST'> <h3>押してください</h3> <button type="submit">開始</button>
該当のソースコード summon.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h2>今日の豚肉料理は</h2> {{ data }} </body> </html>
になります。
現状では
ボタンをクリックするとsummon.htmlに遷移したのち
Not Found
The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.と表示されます。
views.py に main.py をimportするとこのように出ます。
importしなければ通常に遷移します。
初歩的な部分で詰まっているのかもしれませんが、ご指摘いただけると幸いです。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー