Django学习笔记_数据模型在html模板中的使用

2017/1/15 15:57:13


Django学习笔记_数据模型在html模板中的使用

项目需求是这样,我们从数据库中读取了需要的数据,然后渲染到模板之中

blogs=SKBlog.objects.all()

如果我们直接把数据昨晚参数传入到模板中是无法直接使用的

所以这里需要将获取到的数据进行序列化

1 序列化为json类型

    from django.core import serializers
    data = serializers.serialize("json", blogs)

这样就获得了对应的json类型数据:

    [{'model': 'MyBlog.skblog', 'pk': 1, 'fields': {'title': 'asdasd', 'content': 'asdsadsad<p></p>', 'shortContent': 'asdsadsad', 'revisedTime': '1484392439'}}, {'model':...}]

2 json转dict

但是我们的模型中能够接受的仅仅是dict以及list,所以我们选择转化为[{}]的形式

    blogs=SKBlog.objects.all()
    data = serializers.serialize("json", blogs)
    print(eval(data))

这里选择使用eval()方法,获取到的数据传递到模板中:

    blogs=SKBlog.objects.all()
        data = serializers.serialize("json", blogs)
        print(eval(data))
        return render(request,'blogNew.html',{'title':'盛大开的博客','blogs':eval(data)})

3 在模板中使用

     {% for blog in blogs %}
        <div id="showBlog" class="row clearfix">
            <div class="col-md-12 column">
                    <h3>
                        {{ blog.fields.title }}
                    </h3>
                    <p>
                        {{ blog.fields.shortContent }}
                    </p>
                </div>
        </div>
    </div>
    {% endfor %}

OK 大功告成~

2017/1/17 21:37:07


实例讲解:

1.从数据库获取需要的数据:

    blog=SKBlog.objects.get(revisedTime=blogId)

2.分解需要的数据:

    title=blog.title
    content=blog.content
    revisedTime=blog.revisedTime

title和revisedTime使用在html中,而content使用在JS中

3.json序列化JS中需要的数据

    jsonBlog=json.dumps({'content':content})

4.传递给模板

    return render(request,'blogDetail.html',{'title':title,'revisedTime':revisedTime,'blog':jsonBlog})

5.在模板中使用

    {% extends "Base.html" %}
    {% load staticfiles %}
    
    {#标题#}
    {% block title %}
        {{ title }}
    {% endblock %}
    
    {#内容#}
    {% block content %}
        <div class="row clearfix">
            <div class="col-md-12 column" id="blogContent">
                <h3 class="text-center">
                      {{ title }}
                </h3>
            </div>
        </div>
    {% endblock %}
    
    {#JS#}
    {% block JS %}
        <script>
            $(function () {
                var blog={{ blog|safe }};
                $("#blogContent").append(blog.content);
            })
        </script>
    {% endblock %}

可以注意到这里JS中对于blog的使用:
首先使用 var blog={{ blog|safe }}获取到blog,然后在进行下一步操作

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,967评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,246评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,420评论 25 708
  • sf sdf
    Kund烧阅读 118评论 0 0
  • 虽然我的画笔和纸还没到,但是阻挡不了我对画画的热情。 ps:原创来自简书苳杭杭前辈。
    筱萧雅阅读 300评论 2 2