Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在网页中显示Redis排序集元素_Python_Django_Redis - Fatal编程技术网

Python 如何在网页中显示Redis排序集元素

Python 如何在网页中显示Redis排序集元素,python,django,redis,Python,Django,Redis,我正在做一个项目,它使用Redis作为DB来模拟一个简单的类似twitter的社交媒体,它包括python来处理Redis和django框架。 我有一个函数,可以返回一个人时间轴的最后30篇帖子,如下所示: def get_status_messages(conn, uid, timeline='home:', page=1, count=30): statuses = conn.zrevrange('%s%s'%(timeline, uid), (page-1)*count, page

我正在做一个项目,它使用Redis作为DB来模拟一个简单的类似twitter的社交媒体,它包括python来处理Redis和django框架。 我有一个函数,可以返回一个人时间轴的最后30篇帖子,如下所示:

def get_status_messages(conn, uid, timeline='home:', page=1, count=30):
    statuses = conn.zrevrange('%s%s'%(timeline, uid), (page-1)*count, page*count-1)
    pipeline = conn.pipeline(True)
    for id in statuses:
        pipeline.hgetall('status:%s'%id)
    return filter(None, pipeline.execute())
时间轴帖子列表存储在一个排序集中,该排序集保存帖子id和帖子时间戳,并按后者对列表进行排序。每个状态帖子都保存为具有唯一id的散列。 时间轴zset的名称为“profile:xxx”,其中xxx是作者的id,每个帖子的名称为“status:yyy”,yyy是帖子的唯一id。 我试图在html页面中显示这些帖子,下面是我的主页“视图”,它表示时间线:

def home(request):
    id = request.session.get('member_id')
    prof=get_status_messages(conn, id, timeline='home:', page=1, count=30)
    fp = open('template/home.html')
    t = Template(fp.read())
    fp.close()
    html = t.render(Context({'item_list': prof.iteritems()}))
    return HttpResponse(html)
最后,在timeline的html文件中,我们有:

<html>
<head>
    <title>homePage</title>
</head>
<body>
<ol>
{% for key, value in item_list %}
    <li>{{ key }} : {{ value }} </li>
{% endfor %}
</ol>

</body>
</head>
</html>

提前谢谢

管道中的每个结果都是一个dict,但管道本身返回一个列表;只需将
prof
直接传递到上下文即可

编辑因此,您还需要在模板中添加一个额外的循环:

<ol>
{% for item in item_list %}
  {% for key, value in item %}
      <li>{{ key }} : {{ value }} </li>
  {% endfor %}
{% endfor %}
</ol>

{项列表%中的项的百分比}
{键为%s,项%中的值为%s}
  • {{key}}:{{value}
  • {%endfor%} {%endfor%}
    管道中的每个结果都是一个dict。但管道本身返回一个列表;只需将
    prof
    直接传递到上下文即可

    编辑因此,您还需要在模板中添加一个额外的循环:

    <ol>
    {% for item in item_list %}
      {% for key, value in item %}
          <li>{{ key }} : {{ value }} </li>
      {% endfor %}
    {% endfor %}
    </ol>
    
    
    {项列表%中的项的百分比}
    {键为%s,项%中的值为%s}
    
  • {{key}}:{{value}
  • {%endfor%} {%endfor%}
    谢谢您的回答。我尝试了此解决方案,不再出现错误,但现在我有一个空白页,没有显示任何项目。您可以在视图中打印
    prof
    ,并在此处显示结果吗?当然,我已将结果添加到问题中。谢谢你的提示!:)谢谢你的回答。我尝试了此解决方案,不再出现错误,但现在我有一个空白页,没有显示任何项目。您可以在视图中打印
    prof
    ,并在此处显示结果吗?当然,我已将结果添加到问题中。谢谢你的提示!:)