質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

7408閲覧

ローカルサーバーでPOST送信を可能にする

MiShiCa

総合スコア2

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/08/26 11:41

前提・実現したいこと

こちらのサイトに従い、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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FiroProchainezo

2020/08/27 01:27

local環境でもPOSTリクエストは可能です。 何かと勘違いしている可能性がありますのでご確認ください。 質問文に掲載いただいたコードですと、POSTリクエストしている部分が見当たりません。 質問文を編集していただき「POSTリクエストができない」ソースコードを掲載ください。 (この場合ですと、HTMLは必須です。formを作るのにModelを使っている場合はそのコードも必要です。) また、 ○○○.pyの`~~~~~`を実行した場合に、yyyyyの処理が実行されるはずだがされていない、 とか ×××.htmlの`-----`を実行した場合に、zzzzの処理が実行されるはずだが、されていないように見える とか 具体的な問題点を記載ください。 さらに、起動方法が異なる場合もあるので、どのようなコマンドで起動しているかも追加ください。 さらに開発環境、OSも記載いただくと誤解の無い回答が増えると思います。
MiShiCa

2020/08/29 12:11

お礼差し上げるのに日が空いてしまい、すみません。 ご指摘いただいたように、初歩的な勘違いでした。 ありがとうございました。
guest

回答1

0

自己解決

(ディレクトリ構造の初歩的な勘違いでした)

投稿2020/08/29 12:11

MiShiCa

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問