3

私はジャンゴが初めてです。ビュー付きのニュースアプリがあり、ニュースごとにページをレンダリングします。

def news_page(request, news_id):
    news = News.objects.get(pk=news_id)
    tags = news.tags.all()
    category = news.category
    comments = news.comment_set.all()
    form = add_comment(request, news.id)
    return render(request, 'news/news_page.html', {'form': form, 'news': news, 'tags': tags, 'category': category, 'user': request.user, 'comments': comments})

そして、コメント アプリ models.py を作成しました。

class Comment(models.Model):
    author = models.ForeignKey(User)
    comment_body = models.CharField(max_length=500)
    news = models.ForeignKey(News)
        pub_date = models.DateTineField(default = datetime.datetime.now())

フォーム.py:

class AddCommentForm(ModelForm):
    comment_body = forms.CharField(widget=forms.Textarea)

    class Meta():
        model = Comment
        exclude = ('author', 'news','pub_date',)

news_pageビュー(上記)が使用するcomments.view関数add_commentを実現してみます:

def add_comment(request, news_id):
    news = News.objects.get(pk=news_id)
    if request.method == 'POST':
        form = AddCommentForm(request.POST)
        if form.is_valid:
            comment = form.save(commit=False)
            comment.author = request.user
            comment.news = news
            comment.save()
    else:
        form = AddCommentForm()
    return form

しかし、エラー 'AddCommentForm' object has no attribute 'has_header' が発生しました。add_comment ビューに HttpResponse がないために発生していると思います。アイデアが機能するようにするには、コードをどのように書き直せばよいでしょうか。エラーのトレースバック

Internal Server Error: /news/15/comment/
Traceback (most recent call last):
  File "C:\Python27\myproject\djcode\first_venv\venv\lib\site-packages\django\core\handlers\base.py"
, line 187, in get_response
    response = middleware_method(request, response)
  File "C:\Python27\myproject\djcode\first_venv\venv\lib\site-packages\django\contrib\sessions\middl
eware.py", line 26, in process_response
    patch_vary_headers(response, ('Cookie',))
  File "C:\Python27\myproject\djcode\first_venv\venv\lib\site-packages\django\utils\cache.py", line
142, in patch_vary_headers
    if response.has_header('Vary'):
AttributeError: 'AddCommentForm' object has no attribute 'has_header'

ありがとう!

4

2 に答える 2

12

ビューから object を返す必要がありresponseますが、フォーム オブジェクトを返しています。したがって、エラー。

render代わりに使用できます

変化する

return form

return render(request, template_name, {'form': form})
于 2013-07-10T15:18:24.920 に答える
0

カルティクルは正しい

使用することもできます

return render_to_response('template_name',{'form':form})
于 2013-07-10T15:32:30.710 に答える