2017-10-13 1 views
1

양식을 제출하고 주제 페이지로 돌아가고 싶지만 작동하지 않습니다. 제출하기 전에 페이지가 있습니다. page before submitDjango httpresponse가 양식을 제출 한 후에 작동하지 않습니다.

내가 뭔가를 입력하고 버튼을 클릭, 그것은 내가 오류 들려주지 페이지로 반환하지 않습니다는 다음과 같이 보여줍니다 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

고맙습니다. 작동합니다. –

관련 문제