我最近在学习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> </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 :(得分:0)
当表单有效时,您的视图会执行操作,但是当表单无效时,则不会运行执行重定向的块,并且方法退出而不执行任何操作,默认情况下返回None。
当form.is_valid()
返回false时,您需要添加一些操作来处理这种情况,例如错误消息或错误页面重定向。