2017-09-05 308 views
0

Djangoを使用してブログプロジェクトに単純なコメントフォームを統合しようとしていますが、テンプレートは表示されません。私のコードを見て、私は同じテンプレートDjangoのテンプレートにコメントフォームをレンダリングする際に問題が発生しました

コメントフォーム(forms.py)

from django import forms 
from .models import Comment 


class CommentForm(forms.ModelForm): 
    class Meta: 
     model = Comment 
     fields = ('comment',) 
にレンダリングすることができるように詳細ビューとFormViewコントロールを結合する方法を知っておく必要がありいただきまし 間違った教えてください

VIEWS.PY

from django.views.generic import (ListView, DetailView,FormView) 
    from .import models 
    from django.shortcuts import render 
    from django.template import RequestContext 
    from .forms import CommentForm 

    class EntryDetail(DetailView): 
     model = models.EntryPost 
     form_class = CommentForm 
     template_name = "post.html" 

     def comment_valid(request, form): 
      if request.method == "POST": 
       comment_form = form_class(request.POST or None) 
       if comment_form.is_valid(): 
        comment = comment_form.cleaned_data['comment'] 
        comment.save() 
        return super(EntryDetail).comment_valid(form) 
       else: 
        form = CommentForm() 
       return render(request,'post.html',{"form":comment_form,}) 

フォームテンプレート

{% extends "base.html" %} 
{# {% load django_markdown %} #} 

{% block entry_posts %} 
    <div class="post"> 
    <h2><a href="{% url "entry" slug=object.slug %}">{{ object.title }}</a></h2> 
    <p class="meta"> 
     {{ object.created }} | 
     Tagged under {{ object.tags.all|join:", " }} 
    </p> 
    {{ object.body }} 
    </div> 

    <form method="POST" action="">{% csrf_token %} 
    {{form}} 

    <input type="submit" value="Post Comment" class="btn btn-default"> 
    </form> 

    <div class="post"> 

    <strong>COMMENTS</strong> 
    <hr/> 
    {% for comment in entrypost.comments.all %} 
    {% if comment.approve %} 
    <div class="comment"> 
     <strong>{{ comment.name}}| created:{{comment.created}}</strong> 
     <p>{{comment.comment|linebreaks}}</p> 
    </div> 
    {% endif %} 
    {% empty %} 
    <p> no comments :)</p> 

    {% endfor %} 

    </div> 



{% endblock %} 

嘆願私はちょうど私がサーバーを実行するときに間違った原因を教えてくれることを親切に教えてくださいコメントを入力するコメントフィールドを見ることができません私は投稿のコメントボタンを見ることができます。この問題を解決するための寄付を歓迎します。

答えて

0

あなたのテンプレートに{{comment_form}}を使用しています。

しかし、あなたはそのようにレンダリングしますreturn render(request,'post.html',{"form":comment_form,})

{{form}}というテンプレートを使用すると、このテンプレートを呼び出す必要があります。

<form method="POST" action="">{% csrf_token %} 
{{form}} 

フォームが最初に定義する必要がありますので、あなたも if request.method == "POST":なしcomment_formをインスタンス化する必要があります。ただそれを削除します。それですべてがうまくいくはずです。

+0

本当にありがとうございます。私は{{form}}としてレンダリングしても、まだコメントフィールドを表示していません。 – lotlord

+0

コメントフィールドか何もありませんか? – Coder949

+0

コメントフィールド – lotlord

関連する問題