Flacon d'Erreur: “la Méthode Pas Permis La méthode n'est pas autorisée pour l'URL demandée”
J'obtiens l'erreur suivante lorsque j'essaie d'envoyer des données vers mon Flacon de forme:
Method Not Allowed The method is not allowed for the requested URL.
Je pense que le problème est dans la return redirect(url_for('database'))
je suis en train de faire. J'ai aussi essayé de return render_template('database.html)
trop. Je vais essayer d'appeler la page de base de données une fois que les entrées de formulaire ont été soumises à la base de données.
Pertinentes des parties de mon code comme suit:
@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 ...
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>
et database.html...
THIS IS THE QUERY:
{{query}}
OriginalL'auteur Suraj Kapoor | 2013-12-19
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe ici est que la base de données n'est pas accepter n'importe quelle url méthodes.
Je voudrais essayer de mettre l'url de méthodes dans l'application de route tout comme vous avez dans le entry_page fonction:
C'est parce que votre base de données de soumettre la fonctionnalité est dans votre entry_page fonction alors que vous post de formulaire est une redirection vers la fonction base de données. Vous pouvez déplacer que la logique de la entry_page fonction et le mettre dans la base de données de la fonction
Merci encore, cela a fonctionné! Je ne suis pas sûr que je comprends tout à fait pourquoi. Je suis en lui demandant de valider des données de la base de données avant la redirection se produit, et cela fonctionne lorsque je suis rediriger vers une page autre que '/base de données". De toute façon, vous remercie de votre aide.
Je suis content d'avoir pu aider. Si vous souhaitez faire de la base de données s'engager avant la redirection, alors votre entry_page fonction semble correct. Vous devez simplement supprimer l'attribut action de la balise form. Si vous supprimez cette balise, il va rafraîchir la page avec la méthode post et puis il devrait aller dans votre déclaration si
Ahh, ok. Qui fait sens. Merci encore.
OriginalL'auteur Wondercricket
J'ai eu un problème similaire quand j'ai déployé mon Flacon d'application dans IIS. Apparemment, IIS n'accepte pas la route qui incluent un trait de soulignement ("_"). Quand j'ai enlevé le souligner, le problème a été résolu.
OriginalL'auteur Hossein
J'ai aussi eu le même problème où les redirections ont été donnant 404 ou 405 au hasard sur mon serveur de développement. Il avait un problème avec gunicorn instances.
S'avère que je n'avais pas fermer correctement le gunicorn instance avant de commencer un nouveau test.
D'une certaine manière à la fois des processus étaient en cours d'exécution simultanément, à l'écoute sur le même port 8080 et interférer les unes avec les autres.
Assez étrangement, ils ont continué de fonctionner en arrière-plan après que j'ai tué tous mes terminaux.
Fallait les détruire manuellement à l'aide de
fuser -k 8080/tcp
OriginalL'auteur thegiantSmiley
Cette erreur peut venir parfois, si vous exécutez votre application web sans enregistrer le fichier Python.
OriginalL'auteur Venu Gopal Tewari