webentwicklung-frage-antwort-db.com.de

Flaschenfehler: "Methode nicht zulässig Die Methode ist für die angeforderte URL nicht zulässig"

Ich erhalte die folgende Fehlermeldung, wenn ich versuche, Daten an mein Flaschenformular zu senden:

Method Not Allowed The method is not allowed for the requested URL.

Ich denke, das Problem liegt in der return redirect(url_for('database')), die ich gerade mache. Ich habe auch return render_template('database.html) auch probiert. Ich versuche, die Datenbankseite aufzurufen, sobald Formulareingaben an die Datenbank übermittelt wurden. 

Relevante Teile meines Codes sind wie folgt:

@app.route('/entry', methods=['GET', 'POST'])
def entry_page():
    if request.method == 'POST':
        date = request.form['date']
        title = request.form['blog_title']
        post = request.form['blog_main']
        post_entry = models.BlogPost(date = date, title = title, post = post)
        db.session.add(post_entry)
        db.session.commit()
        return redirect(url_for('database'))
    else:
        return render_template('entry.html')

@app.route('/database')        
def database():
    query = []
    for i in session.query(models.BlogPost):
        query.append((i.title, i.post, i.date))
    return render_template('database.html', query = query)

entry.html ist ...

THIS IS THE BLOG ENTRY PAGE

blog:
<html>
    <form action='/database' method = "post">
        date<input name = "date" type = "text" class="text">
        title<input name = "blog_title" type = "text" class="text">
        main<input name = "blog_main" type = "text" class="text">
        <input type = "submit">
    </form> 
</html>

und database.html ...

THIS IS THE QUERY:

{{query}}
22
Suraj Kapoor

Was hier passiert ist, dass die Datenbankroute keine URL-Methoden akzeptiert.

Ich würde versuchen, die URL-Methoden in die App-Route zu setzen, genau wie Sie es in der Funktion entry_page getan haben:

@app.route('/entry', methods=['GET', 'POST'])
def entry_page():
    if request.method == 'POST':
        date = request.form['date']
        title = request.form['blog_title']
        post = request.form['blog_main']
        post_entry = models.BlogPost(date = date, title = title, post = post)
        db.session.add(post_entry)
        db.session.commit()
        return redirect(url_for('database'))
    else:
        return render_template('entry.html')

@app.route('/database', methods=['GET', 'POST'])        
def database():
    query = []
    for i in session.query(models.BlogPost):
        query.append((i.title, i.post, i.date))
    return render_template('database.html', query = query)
31
Wondercricket

Ich hatte ein ähnliches Problem, als ich meine Flask-App im IIS bereitstellte. Anscheinend akzeptiert IIS keine Route, die eine Unterstreichung ("_") enthält. Als ich die Unterstreichung entfernte, wurde das Problem behoben.

2
Hossein

Ich hatte auch ein ähnliches Problem, bei dem Weiterleitungen auf meinem Entwicklungsserver zufällig 404 oder 405 gaben. Es war ein Problem mit Gunicorn-Instanzen.

Es stellte sich heraus, dass ich die Gunicorn-Instanz nicht ordnungsgemäß heruntergefahren hatte, bevor ich eine neue Instanz zum Testen startete. Irgendwie liefen beide Prozesse gleichzeitig, hörten auf denselben Port 8080 und störten sich gegenseitig lief im Hintergrund weiter, nachdem ich alle meine Terminals getötet hatte ..__ musste sie manuell mit fuser -k 8080/tcp beenden

0
thegiantSmiley

Dieser Fehler kann manchmal auftreten, wenn Sie Ihre Web-App ausführen, ohne die Python-Datei zu speichern.

0