方法不允许烧瓶错误405

Mat*_*teo 17 python forms flask

我正在开发一个烧瓶注册表,我收到一个错误:

error 405 method not found.
Run Code Online (Sandbox Code Playgroud)

码:

import os
# Flask
from flask import Flask, request, session, g, redirect, url_for, abort, \
     render_template, flash, Markup, send_from_directory, escape
from werkzeug import secure_filename

from cultura import app

# My app
from include import User

@app.route('/')
def index():
    return render_template('hello.html')

@app.route('/registrazione', methods=['POST']) 
def registration():
    if request.method == 'POST':
        username= request.form.username.data
        return render_template('registration.html', username=username)
    else :
        return render_template('registration.html')
Run Code Online (Sandbox Code Playgroud)

registration.html:

<html>
<head> <title>Form di registrazione </title>
 </head> 

    <body>
    {{ username }}
    <form id='registration' action='/registrazione' method='post'>
    <fieldset >
    <legend>Registrazione utente</legend>
    <input type='hidden' name='submitted' id='submitted' value='1'/>
    <label for='name' >Nome: </label> 
    <input type='text' name='name' id='name' maxlength="50" /> <br>
    <label for='email' >Indirizzo mail:</label>
    <input type='text' name='email' id='email' maxlength="50" />
     <br>
    <label for='username' >UserName*:</label>
    <input type='text' name='username' id='username' maxlength="50" />
     <br>
    <label for='password' >Password*:</label>
    <input type='password' name='password' id='password' maxlength="50" />
    <br>
    <input type='submit' name='Submit' value='Submit' />

    </fieldset>
    </form>
    </body>
    </html>
Run Code Online (Sandbox Code Playgroud)

当我访问时localhost:5000/registrazione,我收到错误.我究竟做错了什么?

Luk*_*raf 49

这是因为您在定义路线时仅允许POST请求.

当您/registrazione在浏览器中访问时,它将首先执行GET请求.只有在您提交表单后,您的浏览器才会执行POST.因此,对于像您这样的自我提交表单,您需要同时处理这两种形式.

运用

@app.route('/registrazione', methods=['GET', 'POST']) 
Run Code Online (Sandbox Code Playgroud)

应该管用.