2017-10-13 11 views
1

Je veux soumettre le formulaire et revenir à la page des sujets, mais cela ne fonctionne pas. Voici la page avant de soumettre. page before submitDjango httpresponse ne fonctionne pas après soumettre le formulaire

J'entre quelque chose et cliquez sur le bouton, il ne retourne pas à la page I Erreur want.The montre comme suit: error page

Il semble que le views.py ne peut pas trouver le droit URL, comment puis-je le réparer?

view.py:

def new_topic(request): 
    if request.method != "POST": 
     form = TopicForm() 
    else: 
     form = TopicForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect(reverse('leraning_log:topics')) 

    context = {'form':form}  
    return render(request,'learning_logs/new_topic.html',context) 

urls.py:

urlpatterns = [ 

    url(r'^topics/$',views.topics,name='topics'), 

    url(r'^topics/(?P<topic_id>\d+)/$',views.topic,name='topic'), 

    url(r'^new_topic/$',views.new_topic,name='new_topic'), 
] 

new_topic.html:

{% extends "learning_logs/base.html" %} 

{% block content %} 
    <p>Add a new topic:</p> 

    <form action="{% url 'learning_logs:new_topic' %} method='post'> 
    {% csrf_token %} 
    {{form.as_p }} 
    <button name="submit">add topic</button> 
    </form> 
{% endblock content %} 
+0

pouvez-vous ajouter votre modèle? –

+0

Merci pour votre rappeler, je l'ai ajouté. –

+4

Regardez la coloration du code .. Le 'action =" "' n'est pas fermé correctement – Nrzonline

Répondre

2

Le problème est dans votre forme, il suffit de supprimer l'action:

<form method='post'>#instead of 
<form action="{% url 'learning_logs:new_topic' %}" method='post'> 

si vous omettez l'action revient automatiquement à la même page, également, une meilleure pratique à votre avis serait:

def new_topic(request): 
    if request.method = "POST": 
     form = TopicForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect(reverse('leraning_log:topics')) 

    else: 
     form = TopicForm() 

    context = {'form':form}  
    return render(request,'learning_logs/new_topic.html',context) 
+0

Merci, ça marche. –