前提・実現したいこと
こちらのサイトに従い、pythonを利用し、ログインとDBへのアクセスをローカルで行えるwebページを作成しています。
ローカル上で実行したところ、POSTリクエストが通常ローカル上では送受信できない(?)と知りました。
この問題を解決したいのですが、検索してみてもいまいち要領を得ません。
皆さんのお知恵を拝借したいです。
発生している問題・エラーメッセージ
Error code: 501 Message: Can only POST to CGI scripts. Error code explanation: HTTPStatus.NOT_IMPLEMENTED - Server does not support this operation.
該当のソースコード
(ディレクトリ全体の詳細は上記のリンクを参照にしていただいた方がわかりやすいかと思います)
python
1#! /user/bin/env python 2 3# import modules 4from flask import Flask, render_template, request, session, redirect 5from dao import user_dao, select_book_dao, insert_book_dao 6from user import User 7 8# Flaskのインスタンス化 9app = Flask(__name__) 10 11# sessionを利用するためのシークレットキー 12app.secret_key = 'nohtyp' 13 14 15# URL、メソッドによる処理の振り付け 16@app.route("/", methods = ['GET','POST']) 17def hello_world(): 18 if request.method == 'GET': 19 # htmlファイルを返す 20 return render_template("index.html") 21 else: 22 #daoを利用してログインユーザーを取得する 23 user = user_dao(request.form["loginID"], request.form["password"]) 24 if user is not None: 25 # sessionにログインユーザーを追加 26 session["user"] = user.login_id 27 return redirect("books") 28 else: 29 return render_template("index.html") 30 31 32# メイン画面の処理 33@app.route("/books", methods = ["GET", "POST"]) 34def book_list(): 35 if request.method == "POST": 36 insert_book_dao(session.get("user"), request.form["bookname"]) 37 books = select_book_dao(session.get("user")) 38 # books.htmlにパラメータを渡して返す 39 return render_template("books.html", books = books) 40 41# controller.pyが実行された際にFlaskが持っている開発用サーバー(ローカル )を起動する 42if __name__ == "__main__": 43 app.run() 44
local環境でもPOSTリクエストは可能です。
何かと勘違いしている可能性がありますのでご確認ください。
質問文に掲載いただいたコードですと、POSTリクエストしている部分が見当たりません。
質問文を編集していただき「POSTリクエストができない」ソースコードを掲載ください。
(この場合ですと、HTMLは必須です。formを作るのにModelを使っている場合はそのコードも必要です。)
また、
○○○.pyの`~~~~~`を実行した場合に、yyyyyの処理が実行されるはずだがされていない、
とか
×××.htmlの`-----`を実行した場合に、zzzzの処理が実行されるはずだが、されていないように見える
とか
具体的な問題点を記載ください。
さらに、起動方法が異なる場合もあるので、どのようなコマンドで起動しているかも追加ください。
さらに開発環境、OSも記載いただくと誤解の無い回答が増えると思います。
お礼差し上げるのに日が空いてしまい、すみません。
ご指摘いただいたように、初歩的な勘違いでした。
ありがとうございました。
回答1件
あなたの回答
tips
プレビュー