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

', '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 %}
        

{{ blog.fields.title }}

{{ blog.fields.shortContent }}

{% 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 %}
        

{{ title }}

{% endblock %} {#JS#} {% block JS %} {% endblock %}

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

你可能感兴趣的:(Django学习笔记_数据模型在html模板中的使用)