博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
评论功能和render渲染
阅读量:6401 次
发布时间:2019-06-23

本文共 5371 字,大约阅读时间需要 17 分钟。

1.render渲染

1.js代码放在HTML中   render返回页面,并将返回的数据渲染到而面上。即页面上只要有{
{}}就渲染, 但是在js代码中,使用{
{}},得不到渲染的值,原因是{
{}}未定义,js时一种语言,所有的变量都需要定义才能使用。 比如在python中输入a,运行报错,输入’a' 运行,就没问题。因此,在js中更需要为{
{}}定义类型 var article_id="{
{ article.pk }}"; 加入引号,定义为str 2.js变为静态文件(即放到单独的文件中) var article_id="{
{ article.pk }}";失效,会渲染不了。将js代码放到这个文件中,在HTML中引入 由于render遇到{
{}}才会渲染,而在当前HTML中中并没有{
{}} 因此js代码中数据渲染不了 解决方法:在HTML中新建标签,将js代码中需要的数据,添加到HTML中,这样js通过找到HTML中这个标签进行取值 在HTNL中添加标签:属性设置为需要的属性
js中取值: var article_id = $(".info").attr("article_id");

2.评论功能

1.在页面上显示出所有评论。即在处理article_detail函数时,从数据库中取得对应文章的评论表 渲染到页面 2.用户评论:     1.在文章处理页面,制作评论区,在评论框中显示出用户的昵称     2.判断用户是否登陆,如果未登陆,就去登陆,已登陆就做评论操作     3.用户评论分为根评论(直接输入评论)和子评论(回复别人),在子评论点击回复时,光标移到评论框内。设置一个属性区分是子评论还是跟评论。设置pid=""     4.如果是回复,就为其添加@用户名的功能     5.提交评论,判断是根评论还是子评论,如果是子评论,就将@用户名给去掉,通过索引进行切片     6.向后台发送数据,后台取到传递过来的文章id,pid和内容,并取到评论人的id,判断pid     7.如果是根评论,就将评论信息写到评论表中,如果是子评论,需将额外的付评论用户ip写进去     8.将评论内容,创建时间,用户名传给ajax     9.ajax接收到数据后,在评论例表中加入新拼接的标签         //拼接使用++         var comment_li= '
  • ' + create_time + '   
    ' + username + '

    ' + content + '

  • '; $(".comment_list").append(comment_li); 10.清空文本框并将pid重新设置为空

    3.评论树

    '''def comment_tree(request,article_id):    ret=list(models.Comment.objects.filter(article_id=article_id).values("pk","content","parent_comment_id"))    print(ret)    return JsonResponse(ret,safe=False) // 获取评论数据,展示评论树结构        $.ajax({            url: "/blog/comment_tree/" + '{
    { article.pk }}/', success: function (data) { console.log(data); $.each(data, function (index, comment_dict) { var s = '
    ' + comment_dict.content + '
    ' if (comment_dict.parent_comment_id) { // 子评论 pid=comment_dict.parent_comment_id; $("[comment_id="+pid+"]").append(s); } else { // 根评论 $(".comment_tree").append(s); } }) } });'''
    View Code

    4.评论功能代码

    '''{% block page-main %}    

    {
    { article.title }}

    {#

    {
    { article.desc }}

    #}

    {

    { article.articledetail.content|safe }}

    {
    { article.up_count }}
    {
    { article.down_count }}

    评论列表

      {
      % for comment in comment_list %}
    • #{
      { forloop.counter }}楼
        
      {
      { comment.create_time|date:"Y-m-d H:i" }}
        
      {
      { comment.user.username }}
      回复
      {# 父评论 #} {
      % if comment.parent_comment_id %}

      {

      { comment.parent_comment.user.username }}:    {
      { comment.parent_comment.content }}

      {
      % endif %}

      {

      { comment.content }}

    • {
      % endfor %}
    //评论功能 {% if request.user.username %}

    昵称:

    评论内容

    {
    % else %} 登录 {
    % endif %} {#自定义一个属性标签,便用后续使用属性值,并且当js设置为静态文件时,时必须要用到的 #}
    {
    % endblock %}{
    % block page_js %} {
    % csrf_token %} {
    % endblock %}'''
    HTML
    '''def article_detail(request, username, pk):    """    :param username: 被访问的blog的用户名    :param pk: 访问的文章的主键id值    :return:    """    user = models.UserInfo.objects.filter(username=username).first()    if not user:        return HttpResponse("404")    blog = user.blog    # 找到当前的文章    article_obj = models.Article.objects.filter(pk=pk).first()    # 所有评论列表    comment_list = models.Comment.objects.filter(article_id=pk)    return render(        request,        "article_detail.html",        {            "username": username,            "article": article_obj,            "blog": blog,            "comment_list": comment_list         }    )def comment(request):    if request.method=='POST':        article_id=request.POST.get("article_id")        pid=request.POST.get("pid")        content=request.POST.get("content")        user_pk=request.user.pk        response = {}        if not pid:  #此时是根评论            comment_obj=models.Comment.objects.create(article_id=article_id,user_id=user_pk,content=content)        else:  #此时是子评论,要添加父评论的id            comment_obj=models.Comment.objects.create(article_id=article_id, user_id=user_pk, content=content,parent_comment_id=pid)        response["create_time"]=comment_obj.create_time.strftime("%Y-%m-%d") #comment_obj.create_time是个日期对象,需要转换        response["content"]= content        response["username"] = comment_obj.user.username        return JsonResponse(response)'''
    View

     

     

     
     

    转载于:https://www.cnblogs.com/zgf-666/p/9129581.html

    你可能感兴趣的文章
    IP子网划分的原理及应用
    查看>>
    系统变量与自定义变量
    查看>>
    分久必合:APU是一种发展趋势
    查看>>
    SCCM2012升级SP1系列之部署SCCM2012①准备系统架构和数据库
    查看>>
    lograte
    查看>>
    在Linux系统中文件(资源)和用户的管理
    查看>>
    IntelAMT 固件密码绕过登录漏洞分析与实战
    查看>>
    ansible自动化管理windows系统实战
    查看>>
    AgileEAS.NET之数据关系映射ORM
    查看>>
    Jquery封装tab自动切换效果
    查看>>
    Iperf安装使用及测试专线带宽
    查看>>
    抢先体验IE9
    查看>>
    【斗医】【16】Web应用开发20天
    查看>>
    javascript 基本使用—字符串、变量、数组、函数、for循环
    查看>>
    [C# 开发技巧]实现属于自己的截图工具
    查看>>
    mysql基础调优
    查看>>
    CYQ.Data 快速开发之UI(赋值、取值、绑定)原理
    查看>>
    使用路由器实现不同VLAN间通信_路由交换
    查看>>
    真我新格调 勇敢使梦想触手可及
    查看>>
    ExtJs 动态RadioGroup的子项 [ Ext | RadioGroup | items ]
    查看>>