2015-12-11 60 views
0

我在书中学习Django的Web开发了解到的Django最近。我希望让鸣叫后功能,但我总是得到以下为什么表单无效?

视图tweets.views.PostTweet错误没有返回HttpResponse对象。 它返回无来代替。

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

这里的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()) 

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

回答

0

你的观点采取行动时,形式是有效的,但在形式无效,那么,做重定向块没有运行,该方法退出而不采取任何行动,在默认情况下返回无。

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