python - POST 方法不允许用于简单的查找网页
问题描述
我有一个带有数据输入字段和单击按钮的简单页面,这将运行 API 来检索硬币数据
在 python 终端中运行代码返回成功,但是当我尝试将其添加到烧瓶并使用网页时,我收到错误 405 方法不允许用于 POST。
这是主要的 python/flask 文件: crypto.py
# template libraries
from flask import render_template,url_for,flash,request,redirect,Blueprint
# Coingecko API library
from pycoingecko import CoinGeckoAPI
crypto_simulator = Blueprint('crypto_simulator',__name__)
@crypto_simulator.route('/crypto_simulator', methods=['GET','POST'])
@login_required
def crypto_insert():
if request.form.get("ident") == "formCrypto":
print('Hello')
cg = CoinGeckoAPI()
#crypto_token = request.form.get('crypto_name_html', '')
crypto_token = 'bitcoin'
crypto_currency = 'usd'
response = cg.get_price(ids=crypto_token,
vs_currencies='usd',
include_market_cap='true',
include_24hr_vol='true',
include_24hr_change='true',
include_last_updated_at='true')
crypto_result = response.get(crypto_token,'')
print(crypto_result[crypto_currency])
return render_template('crypto_simulator.html',
formCryptoSimulation=form,
crypto_token=crypto_token,
crypto_currency=crypto_currency,
crypto_result=crypto_result
)
这是蓝图路由文件: core.py
# crypto section
@core.route('/crypto_simulator')
def crypto_simulator():
return render_template('crypto_simulator.html')
这是 Flask/Bootstrap 前端: crypto_simulator.html
{% extends "base.html" %}
{% block content %}
<!-- Simulation Code Start -->
<div class="forms">
<div class="formCrypto">
<form method="post" action="{{ url_for('core.crypto_simulator') }}">
<div class="container">
<div class="row g-3">
<div class="col-sm-3">
<label class="form-label"><b>Crypto Name:</b></label>
<input type="text" class="form-control" name="crypto_name_html" placeholder="Enter Crypto Name" required>
</div>
</div>
</div>
<br>
<div class="d-grid gap-2 d-md-flex justify-content-md-start">
<button id="btn" type="submit" class="btn btn-info">Check Token!</button>
</div>
<input type=hidden name="ident" value="formCrypto">
</form>
<br>
<p>Token: <b>{{crypto_token}}</b>
<p>Price: <b>{{crypto_result}}</b>
</div>
</div>
{% endblock %}
我检查了拼写错误的行和任何相关内容,但仍然坚持如何修复它......
解决方案
你的表格有这个:
<form method="post" action="{{ url_for('core.crypto_simulator') }}">
crypto_simulator
所以你在 blueprint中调用函数core
:
@core.route('/crypto_simulator')
def crypto_simulator():
return render_template('crypto_simulator.html')
请注意,您的表单执行 POST 请求,因此您必须在被调用的函数上启用 POST 方法,如下所示:
@core.route('/crypto_simulator', methods=['GET','POST'])
推荐阅读
- css - 如何使 Div(紫色框)容器中的内容响应
- spring-mvc - 如何在spring mvc中将输入流(图像)显示到jsp?
- java - 没有文件的角度上传文件到后端(400错误请求)
- react-native - 简单示例 Expo / React Navigation 5
- swift - 从 var-args 参数创建节点对象
- arrays - 如果具有该值的散列不存在,则在数组中添加散列,否则扩展现有的散列
- c - 来自完全相同的二进制文件的不同输出
- android-studio - 用 Android Studio Flutter 项目的上下文菜单中未显示的列换行
- css - Webfont 渲染问题
- javascript - Jquery 只在页面刷新后加载?