无法使用django评论框架在django中获取评论表单

时间:2016-01-16 16:37:44

标签: python django django-comments

我正在尝试将django评论应用程序与我自己的名为“blog”的应用程序集成。但是,当我试图获得评论表时,我得到'无'而不是模型表格。

下面是我的“home.html”模板代码,我希望我的表单出现。

{% load staticfiles %}
{%load comments%}
<!DOCTYPE html>
<html lang="en">

<head>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Sourav's blog</title>

    <!-- Bootstrap Core CSS -->
    {%block styling%}
    <link href="{%static 'css/bootstrap.min.css'%}" rel="stylesheet">

    <!-- Custom CSS -->
    <link href="{%static 'css/blog-post.css'%}" rel="stylesheet">
    {%endblock styling%}

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
        <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->

</head>

<body>

    <!-- Navigation -->
    <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
        <div class="container">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="#">Ideate</a>
            </div>
            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav">
                    <li>
                        <a href="{%url 'blog_new_post'%}">New idea</a>
                    </li>
                    <!-- <li><a href="{%url 'blog_login'%}">Login</a></li> -->
                    {{user.is_authenticated}}
                    {% if user.is_authenticated %}
                    <li>
                        <a href="{%url 'blog_logout'%}">Logout</a>
                    </li>
                    {% else %}
                    <li>
                        <a href="{%url 'blog_login'%}">Login</a>
                    </li>
                    {% endif %}
                    <li>
                        <a href="#">Help</a>
                    </li>
                    {% if user.is_authenticated %}
                    <li>
                        <a href="#">Hi {{user.username}}</a>
                    </li>
                    {%else%}

                    {% endif %}
                </ul>
            </div>
            <!-- /.navbar-collapse -->
        </div>
        <!-- /.container -->
    </nav>

    <!-- Page Content -->
    <div class="container">

        <div class="row">

            <!-- Blog Post Content Column -->
            <div class="col-lg-8">

                <!-- Blog Post -->

                <!-- Title -->
                <h1>Idea Blog</h1>

                <!-- Author -->
                <p class="lead">
                    by <a href="#">Ideate</a>
                </p>

                <hr>

                <!-- Date/Time -->
                <p><span class="glyphicon glyphicon-time"></span> 
                Posted on
                <!-- {%for i in blog_data%} 
                    {{i.posted_on}}
                {%endfor%}</p> -->
                {% for i in last_element %}                        
                    {{i.posted_on}}
                {%empty%}
                    <span>No data</span>
                {%endfor%}


                <hr>

                <!-- Preview Image -->
                <img class="img-responsive" src="http://placehold.it/900x300" alt="">

                <hr>

                <!-- Post Content -->
                <!-- <p>Below is the result</p> -->
                <!-- <p>{{blog_data}}</p> -->
                <p>

                    <!-- {%for i in blog_data%}                        
                       <h1>{{i.title}}</h1> 
                       <p>{{i.description}}</p>  

                    {%empty%}
                        <span>No data</span>
                    {%endfor%} -->
                    <!-- {{last_element}} -->
                    {% for i in last_element %}                        
                        <h1>{{i.title}}</h1> 
                        <p>{{i.description}}</p>
                    {%empty%}
                        <span>No data</span>
                    {%endfor%}

                    {% get_comment_count for blog.blogpost 2 as comment_count %}
                    <p>{{ comment_count }} comments have been posted.</p> 

                    {% get_comment_list for blog.blogpost 1 as comment_list %}
                    {% for comment in comment_list %}
                    <p>Posted by: {{ comment.user_name }} on {{ comment.submit_date }}</p>

                    <p>Comment: {{ comment.comment }}</p>

                    {% endfor %}
                    {%get_comment_form for blog.blogpost as comment_form %}
                    <p>{{comment_form}}</p>

                    {% get_comment_form for blog.blogpost as form %}
                    <!-- A context variable called form is created with the necessary hidden
                    fields, timestamps and security hashes -->
                    <table>
                      <form action="{% comment_form_target %}" method="post">
                        {% csrf_token %}
                        {{ form }}
                        <tr>
                          <td colspan="2">
                            <input type="submit" name="submit" value="Post">
                            <input type="submit" name="preview" value="Preview">
                          </td>
                        </tr>
                      </form>
                    </table>


                </p>               


                <hr>
                <!-- Blog Comments -->

                <!-- Comments Form -->
                <div class="well">
                    <h4>Leave a Comment:</h4>
                    <form role="form">
                        <div class="form-group">
                            <textarea class="form-control" rows="3"></textarea>
                        </div>
                        <button type="submit" class="btn btn-primary">Submit</button>
                    </form>
                </div>

                <hr>

                <!-- Posted Comments -->

                <!-- Comment -->
                <div class="media">
                    <a class="pull-left" href="#">
                        <img class="media-object" src="http://placehold.it/64x64" alt="">
                    </a>
                    <div class="media-body">
                        <h4 class="media-heading">Start Bootstrap
                            <small>August 25, 2014 at 9:30 PM</small>
                        </h4>
                        Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
                    </div>
                </div>

                <!-- Comment -->
                <div class="media">
                    <a class="pull-left" href="#">
                        <img class="media-object" src="http://placehold.it/64x64" alt="">
                    </a>
                    <div class="media-body">
                        <h4 class="media-heading">Start Bootstrap
                            <small>August 25, 2014 at 9:30 PM</small>
                        </h4>
                        Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
                        <!-- Nested Comment -->
                        <div class="media">
                            <a class="pull-left" href="#">
                                <img class="media-object" src="http://placehold.it/64x64" alt="">
                            </a>
                            <div class="media-body">
                                <h4 class="media-heading">Nested Start Bootstrap
                                    <small>August 25, 2014 at 9:30 PM</small>
                                </h4>
                                Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
                            </div>
                        </div>
                        <!-- End Nested Comment -->
                    </div>
                </div>

            </div>

            <!-- Blog Sidebar Widgets Column -->
            <div class="col-md-4">

                <!-- Blog Search Well -->
                <div class="well">
                    <h4>Blog Search</h4>
                    <div class="input-group">
                        <input type="text" class="form-control">
                        <span class="input-group-btn">
                            <button class="btn btn-default" type="button">
                                <span class="glyphicon glyphicon-search"></span>
                        </button>
                        </span>
                    </div>
                    <!-- /.input-group -->
                </div>

                <!-- Blog Categories Well -->
                <div class="well">
                    <h4>Blog Categories</h4>
                    <div class="row">
                        <div class="col-lg-6">
                            <ul class="list-unstyled">
                                <li><a href="#">Category Name</a>
                                </li>
                                <li><a href="#">Category Name</a>
                                </li>
                                <li><a href="#">Category Name</a>
                                </li>
                                <li><a href="#">Category Name</a>
                                </li>
                            </ul>
                        </div>
                        <div class="col-lg-6">
                            <ul class="list-unstyled">
                                <li><a href="#">Category Name</a>
                                </li>
                                <li><a href="#">Category Name</a>
                                </li>
                                <li><a href="#">Category Name</a>
                                </li>
                                <li><a href="#">Category Name</a>
                                </li>
                            </ul>
                        </div>
                    </div>
                    <!-- /.row -->
                </div>

                <!-- Side Widget Well -->
                <div class="well">
                    <h4>Side Widget Well</h4>
                    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Inventore, perspiciatis adipisci accusamus laudantium odit aliquam repellat tempore quos aspernatur vero.</p>
                </div>

            </div>

        </div>
        <!-- /.row -->

        <hr>

        <!-- Footer -->
        <footer>
            <div class="row">
                <div class="col-lg-12">
                    <p>Copyright &copy; Your Website 2014</p>
                </div>
            </div>
            <!-- /.row -->
        </footer>

    </div>
    <!-- /.container -->

    <!-- jQuery -->
    {%block javascript%}
    <script src="{%static 'js/jquery.js'%}"></script>

    <!-- Bootstrap Core JavaScript -->
    <script src="{%static 'js/bootstrap.min.js'%}"></script>
    {%endblock javascript%}

</body>

</html>
当我点击主页“home.html”

时,会调用views.py中的代码下面的

def home(request):
    blog_data = BlogPost.objects.all()
    last_element = BlogPost.objects.filter(id = len(blog_data))
    context = {'blog_data':blog_data, "last_element":last_element}
    #last_element = list(BlogPost.objects.all().reverse()[0])
    print("last_element",last_element, "blog_data",blog_data,"context",context)
    return render(request, 'blog/home.html', context)

models.py

from django.db import models
from django.contrib.auth.models import User

    # Create your models here.
    class BlogPost(models.Model):
        title = models.CharField(max_length = 30)
        posted_by = models.CharField(max_length = 30)
        posted_on = models.DateTimeField(auto_now_add = True)
        description = models.CharField(max_length = 200)
        comment = models.CharField(max_length = 150) 
        tags = models.CharField(max_length=50, default = "notag")


        def __str__(self):
            #return "{0} : {1}".format(self.title, self.description)
            return self.title

enter image description here

请帮我解决这个问题。如果需要任何其他信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

查看the documentation for get_comment_form,看起来在使用此标记时必须包含BlogPost的ID:

{% get_comment_form for blog.blogpost last_element.id as comment_form %}