为什么表单无效?

时间:2015-12-11 04:04:33

标签: python django twitter

我最近在学习Django Web开发一书中学习了Django。我希望make post-tweet 功能,但我总是得到以下错误

  

视图tweets.views.PostTweet没有返回HttpResponse对象。   它改为返回None。

经过一系列测试,我发现表格无效。

这是views.py

class PostTweet(View):
    """
    Tweet post form availbale on page/user/<username> URL
    """
    form_class = TweetForm
    template_name = 'profile.html'

    def post(self, request, username):
        form = self.form_class(request.POST)
        if form.is_valid():
            user = User.objects.get(username=username)
            tweet = Tweet(text=form.cleaned_data['text'],
                          user=user,
                          country=form.cleaned_data['country'])
            tweet.save()
            form.save()
            return HttpResponseRedirect('/user/'+username)

profile.html

{% extends "base.html" %}
{% block content %}
<div class="row clearfix">
  <div class="col-md-6 col-md-offset-3 column">
    <form id="search-form" method="POST" action="post/">{% csrf_token %}
      <div class="col-md-8 fieldWrapper">
        <textarea cols="85" id="id_text" maxlength="160" name="text" rows="1"></textarea>
        <input id="id_country" name="country" type="hidden" />
        <span class="input-group-btn">
          <button class="btn btn-default" type="submit">Post</button>
        </span>
      </div>
    </form>
  </div>
  <h3>&nbsp;</h3>
  <div class="col-md-12 column">
    {% for tweet in tweets %}
      <div class="well">
        <span>{{ tweet.text}}</span>
      </div>
    {% endfor %}
  </div>
</div>
{% endblock %}

forms.py

from django import forms

class  TweetForm(forms.Form):
    text = forms.CharField(widget=forms.Textarea.is_required,max_length=160)
    country = forms.CharField(widget=forms.HiddenInput())

任何人只是给我一个提示将不胜感激。 : - )

1 个答案:

答案 0 :(得分:0)

当表单有效时,您的视图会执行操作,但是当表单无效时,则不会运行执行重定向的块,并且方法退出而不执行任何操作,默认情况下返回None。

form.is_valid()返回false时,您需要添加一些操作来处理这种情况,例如错误消息或错误页面重定向。

相关问题