美文网首页
Django学习笔记_数据模型在html模板中的使用

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

作者: Ugly_K | 来源:发表于2017-01-15 19:24 被阅读77次

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,然后在进行下一步操作

相关文章

网友评论

      本文标题:Django学习笔记_数据模型在html模板中的使用

      本文链接:https://www.haomeiwen.com/subject/bcqubttx.html