我正在写一个类似Twitter的笔记记录网络应用程序。
在一个页面中,将列出该用户的最新20个音符, 当用户滚动到浏览器窗口底部时,将加载和渲染更多项目。
最初的20个音符是我的django模板生成的html的一部分,但其他动态加载的项目是json格式。
我想知道如何一致地进行标记和用户名转换。
提前致谢。
答案 0 :(得分:2)
这里要考虑几件事。在服务器端,您必须能够维护用户所在的备注列表的“块”。最简单的方法可能是Django paginator。它的工作原理基本上是通过QuerySet
,设置项目数量的计数,然后给它“页面”数字(或“块”数字),它返回这些项目。
你可以用JSON做到这一点,但用HTML也很容易。当我们查看客户端部分时,您会明白原因。
所以我们可以有一个视图“api”来处理一个音符“chunk”(注意我这里的所有代码示例都只是为了演示而缩写。你想要有错误处理和所有这些) ...
def get_notes_chunk(request, *args, **kwargs):
# Get our notes, however...
all_notes = Notes.objects.all()
# Paginate them based on the page we're on...
chunk_number = request.GET.get('c')
paginator = Paginator(all_notes, 20) # (show 20 at a time)
current_chunk = paginator.page(chunk_number)
# Render to template all that jazz
render_to_template( ... , { 'paginator':paginator, 'current_chunk':current_chunk }, ...)
我们的模板会呈现<li>
个标签,我们会将这些标签粘贴到客户端的<ul>
上...
{% for note in current_chunk.object_list %}
<li>{{ note }}</li>
{% endfor %}
现在在客户端上,我们需要编写一些javascript来处理这个问题。由你来决定触发更新的事件,但至于如何,我们可以使用一个小jQuery来处理这个......
<script type="text/javascript">
var chunk_count = 1;
var notes_list_id = 'notes-list'
function load_next_chunk() {
chunk_count += 1;
$.get('{% url get_notes_chunk %}?c=' + chunk_count, function(html) {
$('#'+notes_list_id).append(html);
});
}
</script>
<body>
...
<ul id="notes-list">
<!-- Render chunk #1 here -->
</ul>
...
</body>
一些可能有意义的事情......
答案 1 :(得分:1)
问题不是那么清楚......但是为了从Tweet中生成HTML,请看一下twp(基于官方的twitter-text-java lib):
http://github.com/BonsaiDen/twp
答案 2 :(得分:0)
我不确定你问的是什么,但{{ user.get_absolute_url }}
之类的东西有什么问题?对于标记详细信息URL,它实际上取决于您要查找的内容,但您必须自己构建URL并查看。