2017-10-13 1 views
1

フォームを送信してトピックページに戻したいが、動作しない。ここには投稿する前のページがあります。 page before submitDjango httpresponseが送信フォームの後に動作しない

私が何かを入力してボタンをクリックし、それは私がエラーwant.Theページに戻りませんが、次のように示しています error page

それは権利を見つけることができませんviews.pyのように思えますURL、どうすれば修正できますか?

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

あなたのテンプレートを追加することができますか? –

+0

あなたの思い出してくれてありがとう、私はそれを追加しました。 –

+4

コードの着色を見てください。 'action =" "'が正しく閉じられていません。 – Nrzonline

答えて

2

問題は、あなたの中にありますフォームは、単にアクションを削除:あなたはアクションが自動的に同じページに戻っ省略した場合

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

、また、あなたのビューでより良い練習には次のようになります。

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

ありがとうございます。 –

関連する問題