前提・実現したいこと
htmlでチェックボックスを作成し、チェックされた値をpostし、cgiを用いて.pyに値を渡したいです。
チェックボックスが入力されている値(value)を取得したいのですが、エラーが出てしまいます。
PythonでFlaskを利用するのは初めてなため、質問がうまくできているかわかりませんが、ご教示いただければ幸いです。
発生している問題・エラーメッセージ
RuntimeError: Working outside of request context. This typically means that you attempted to use functionality that needed an active HTTP request. Consult the documentation on testing for information about how to avoid this problem.
該当のソースコード
html
1<!DOCTYPE html> 2<html><head> 3<meta charaset = "utf-8"> 4<link rel="stylesheet" href="choice_screen.css"/> 5</head> 6<body> 7<form action="/cgi-bin/choice_screen.py" method="post"> 8 <div id="main"> 9 <ul class="image_list"> 10 <li> 11 <div class="image_box"> 12 <img class="thumbnail" src="example_1.jpg" alt="foo"/> 13 <input class="disabled_checkbox" name="choice" type="checkbox" value="0" checked / > 14 </div> 15 </li> 16 <li> 17 <div class="image_box"> 18 <img class="thumbnail" src="example_2.jpg" alt="foo"/> 19 <input class="disabled_checkbox" name="choice" type="checkbox" value="1" checked /> 20 </div> 21 </li> 22 </ul> 23</div> 24<input type="submit" value="選択完了"> 25</form> 26<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> 27<script src="base.js"></script> 28</body> 29</html> 30
Python3
1#!/usr/bin/python3 2# -*- coding: utf-8 -*- 3import cgi 4import cgitb 5from flask import Flask, request 6app = Flask(__name__) 7 8cgitb.enable() 9 10print("Content-Type: text/html; charset=UTF-8\n") 11 12@app.route("/hi", methods=['POST']) 13def hi(): 14 name = request.form.getlist('fav') 15 print(name) 16 17form = cgi.FieldStorage() 18 19print(hi())
やってみたこと
ファイルの構造は、以下のようになっています。
text
1index.html 2| 3cgi-bin 4|_ choice_screen.py
はじめ、単純にform = cgi.FieldStorage()をprintしてみたところ、noneで返されたので、チェックボックスの値を取得する方法を模索しており、flaskに辿り着きました。ど素人ですが、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/26 08:30
2021/10/26 08:41
2021/10/26 13:25