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

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

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

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

POST

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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

受付中

POST送受信 flaskについて

tiikk
tiikk

総合スコア10

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

POST

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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

1回答

0評価

0クリップ

111閲覧

投稿2022/06/16 11:12

編集2022/06/16 22:21

flaskで作成しています。methods=["POST"]の状態だとうまく動かずにNot foundと出ますが何も指定しないとうまく動きます。POSTと指定するのが正解だと思うのですがなぜPOSTだと動かないのでしょうか?
curlを使ってPOSTで送信してみるとhtmlが返ってきて正常に動いていると思います。
postでhtmlから送信がうまく出来ていないということでしょうか?
pythonのほうではエラー等でていませんでした。
教えてください。お願い致します。
@app.route('/insert')の場合
イメージ説明

python

from flask import Flask, render_template, request, redirect, url_for from flask_sqlalchemy import SQLAlchemy app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://{user}:{password}@{host}/{db_name}?charset=utf8'.format(**{ 'user': '', 'password': '', 'host': '', 'db_name': '' }) app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False app.config['SQLALCHEMY_ECHO'] = False # dbの初期化 db = SQLAlchemy(app) class Shohin(db.Model): __tablename__ = 'Shohin' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.Text) price = db.Column(db.Integer) @app.route('/result', methods=['GET']) def result(): datas = Shohin.query.all() return render_template("index3.html", lists=datas) @app.route('/insert', methods=["POST"]) def insert(): name_txt = request.form['name'] price_txt = request.form['price'] shohin = Shohin() shohin.name = name_txt shohin.price = price_txt db.session.add(shohin) db.session.commit() return redirect("/portfolio/result") if __name__ == "__main__": app.run(host='0.0.0.0', debug=True)

html

<body> <div> <table> <thead> <tr> <th>ID</th> <th>商品名</th> <th>値段</th> </tr> </thead> <tbody> {% for item in lists %} <tr> <th>ID</th> <th>{{item.name}}</th> <th>{{item.price}}</th> </tr> {% endfor %} </tbody> </table> </div> <form action='insert' method="POST"> <p><新規登録></p> <label> 商品名 <input type="text" name="name"> </label> <label > 値段 <input type="text" name="price"> </label> <button type="submit">登録</button> </form> </body> </html>

cgi

#! /home/ユーザーid/anaconda3/bin/python from sys import path import os from wsgiref.handlers import CGIHandler from flask_sample import app from werkzeug.middleware.proxy_fix import ProxyFix path.insert(0, '/サイト名/portfolio/') class ProxyFix(object): def __init__(self, app): self.app = app def __call__(self, environ, start_response): # ※要書き換え environ['SERVER_NAME'] = "サイト名" environ['SERVER_PORT'] = "80" environ['REQUEST_METHOD'] = "GET" environ['SCRIPT_NAME'] = "" if 'PATH_INFO' not in environ: environ['PATH_INFO'] = '' environ['QUERY_STRING'] = "" environ['SERVER_PROTOCOL'] = "HTTP/1.1" return self.app(environ, start_response) if __name__ == '__main__': app.wsgi_app = ProxyFix(app.wsgi_app) CGIHandler().run(app)

htaccess

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /portfolio/index.cgi/$1 [QSA,L]

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

POST

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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