简单的django POST无法正常工作

时间:2015-04-29 01:30:22

标签: python django django-forms

我有一个这样的表格:

<form action="{% url "forum.posts" forum=forum.slug thread=thread.slug %}" method="POST">
    {% csrf_token %}
    <div class="form-group">
        <textarea class="form-control" placeholder="Začni tipkati.."></textarea>
    </div>
    <input type="submit" class="btn btn-success" value="Pošlji odgovor">
</form>

views.py

'''
Display all posts in a thread or create a new post in a thread.
'''
def posts(request, forum, thread):
    forum = Forum.objects.get(slug=forum)

    thread = Thread.objects.get(slug=thread)

    if request.method == "POST":

        return HttpResponse('ok')

    posts = thread.posts.all()

    return render(request, 'forum/posts.html', {
        'forum': forum,
        'thread': thread,
        'posts': posts
    })

urls.py(相关部分):

# List all posts in a thread / Submit a post to a forum
url(r'^(?P<forum>[-\w]+)/(?P<thread>[-\w]+)/$', 'forum.views.posts', name='forum.posts'),

HTML输出:

<form action="/forum/o-spletiscu/novatemaa/" method="post">
    <input type="hidden" name="csrfmiddlewaretoken" value="4PQWDsAfHyjrhUnYU5P9vVhtaY3vLPBU">
    <div class="form-group">
        <textarea name="post-body" class="form-control" placeholder="Začni tipkati.."></textarea>
    </div>
    <input type="submit" class="btn btn-success" value="Pošlji odgovor">
</form>

点击提交后,我希望返回ok,而不是页面刷新,没有任何反应。 正常的GET请求正在运行..

我错过了什么?

修改 当我在@csrf_exempt方法上使用posts时,它正在工作。

1 个答案:

答案 0 :(得分:1)

  

页面刷新,没有任何反应

您的行动价值出现问题。试着检查一下,发现网址是否正确。

OR

您的表单没有name属性的任何输入。

试试这个:

  <form action="{% url "forum.posts" forum=forum.slug thread=thread.slug %}" method="POST">
      {% csrf_token %}
      <div class="form-group">
          <textarea class="form-control" placeholder="Začni tipkati.." name="something"></textarea>
      </div>
      <input type="submit" class="btn btn-success" value="Pošlji odgovor">
  </form>