vue.jsでサイトに入力された情報をcgiを使ってpython側に送りたいのですが、python内で500 (Internal Server Error)が起きてしまい動作してくれません。
試しにcgiで受け取った情報を変数に入れるコードの部分を、cgiで受け取った情報ではなく、文字列を入れるとそれエラーは起きなく、関数も動き取得したい情報が取得できますので下記に記載するコード以外のところは問題ないかと思われます。
権限は755で受け取れるようにしてあるのですが、、
どなたかわかる方おりましたらご教授していただけると幸いです。。。。。
vue.js↓
var app = new Vue({ el: '#app', data: { city:'', context: {}, isActive: false, isActiveMore:false, check_message:'' }, methods: { postResult: function() { const url = 'http://localhost/post.py'; // POSTでデータを渡す axios.post(url, { city: this.city //html内ではinputのv-modelにcityと入れてあり、そこに入力した情報が入るようになっている。 ##<input v-model="city" type="text" class="form-control" value='' placeholder="都市名を入力してください">## }) .then(res => ##レスポンスのところは,pythonでpostで送られた情報を入れるコードを書かなかったら返ってきたので正常に動いていることが確認できている。 そのため省略。 } } } )
python側↓
post.py
#!/usr/local/bin/python3 # -*- coding: utf-8 -*- import cgi import requests import cgitb import json import MySQLdb from MySQLdb.cursors import DictCursor form = cgi.FieldStorage() city = form['city'].value ##上の二行を、下1行のようにcigでpostから得た情報を受け取る必要がない状態にすると動くし、値も返すことができる。 ##city = 'saitama' def test(city): 以下動くことが確認できているので省略
pythonファイルに下記を入れたところ500 serverエラーは解消できました。
しかし依然としてpostで送られた情報をキャッチしてくれません。
import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') print('Content-Type: text/html; charset=UTF-8\n') form = cgi.FieldStorage() city = form['city'].value コード
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/09 14:56
2020/11/09 14:59
2020/11/09 15:06