2017-09-14 5 views
0

J'essaye d'écrire une vue qui fera deux choses: d'abord il montrera un formulaire vide, si le request.method est Get. puis il doit soumettre le formulaire dans la base de données, si la méthode est POST. Le problème est que, lorsque le formulaire est envoyé et qu'il doit POST, la même vue ne s'exécute pas, mais exécute l'URL racine du projet. ici est le journal:django - POST après Get ne fonctionnera pas dans la vue

(ajouter l'URL est que je me suis fixé pour ce point de vue)

[14/Sep/2017 18:27:07] "GET /add HTTP/1.1" 200 1815 
[14/Sep/2017 18:27:12] "POST/HTTP/1.1" 200 1683 

(ajouter l'URL est que je me suis fixé pour ce point de vue)

et le code ressemble à ceci:

def add_link(request): 
    if request.method == 'POST': 
     form = Form(request.POST) 
     ... 

    else: 
     form = Form() 
    return render(request, 'mytemp.html', {'form': form }) 

et voici comment la forme ressemble dans le modèle:

<form action="." method="post"> 
     {{ form.as_p }} 
     {% csrf_token %} 
     <p><input type="submit" value="Add Link"></p> 
    </form> 
+0

À quoi ressemble votre modèle contenant le formulaire soumis? – schillingt

+0

Je l'ai ajouté à la question ci-dessus. –

+0

Voir aussi vos URL s'il vous plait. –

Répondre

0

L'action n'est pas correctement:

<form action="." method="post"> 

Soit laisser complètement:

<form method="post"> 

Ou utiliser {% url ... %} pour laisser pointer vers la vue actuelle.

<form action="{% url 'yourviewsname' %}" method="post"> 

S'il vous plaît poster votre urls.py pour une réponse plus détaillée.