如何显示所有具有相同标题的笔记,并在内容旁边显示标题。
你知道如何显示标题&每个笔记的内容? 如在https://sandbox.evernote.com中那样。
我有一些相同标题的笔记,并希望显示所有这些笔记的列表以及其他笔记。
What the right combination of lists and dicts or other structures ?
我收到了错误:列表索引必须是整数,而不是str。
nb = []
nb.append([])
for note in result_list.notes:
content = note_store.getNoteContent(auth_token,
note_store.getNote(note.guid,
True,False, False, False).guid)
nb[note.guid].append([note.title, html2text.html2text(BeautifulSoup(ENMLToHTML(content), "html.parser").prettify()) ])
return render_to_response('oauth/callback.html', {'notebooks': notebooks,
'result_list': result_list,
'nb': nb})
<ul>
{% for i,j,n in enumerate(nb) %}
<li><b>{{ nb[i][j][n] }}</b><br>{{ nb[i][j][n+1] }}</li>
{% endfor %}
</ul>
理想输出的样本:
我已经有了以这种方式输出的工作代码,但是
目前:
每个标题只显示一个音符,
或
显示所有具有相同标题的笔记,并在内容旁边显示guid(所有笔记都很好,但我需要将内容与内容一起输出)
P.S
另一次尝试:
title_contents = {}
for note in result_list.notes:
content = note_store.getNoteContent(auth_token,
note_store.getNote(note.guid,
True,False, False, False).guid)
title_contents[ note.guid ] = [ note.title, html2text.html2text(BeautifulSoup(ENMLToHTML(content), "html.parser").prettify()) ]
return render_to_response('oauth/callback.html', {'notebooks': notebooks,
'result_list': result_list,
'title_contents': title_contents})
Django的HTML:
<ul>
{% for content in title_contents.items %}
<li><b>{{ content }}</b><br>{{ content }}</li>
{% endfor %}
</ul>
当前输出:
(&#39; c41c95b1-d2c5-481d-9fa6-34342371aba3&#39;,[&#39; hi&#39;,u&#39; hello stackoverflow \ n \ n&#39;])< /强>
(&#39; c41c95b1-d2c5-481d-9fa6-34342371aba3&#39;,[&#39; hi&#39;,u&#39; hello stackoverflow \ n \ n&n;&#39;])
我试图通过索引获取标题和内容,例如:
<ul>
{% for content in title_contents.items %}
<li><b>{{ content[0] }}</b><br>{{ content[1] }}</li>
{% endfor %}
</ul>
但得到另一个错误:
TemplateSyntaxError at /callback/
Could not parse the remainder: '[0]' from 'content[0]'
2016年2月10日:
我开始使用 Node Js 撰写此Web应用程序,
并且所有的东西在控制台中都能正常工作(当然还有令牌oauth,只显示文本,从文件中导入笔记(简单解析),显示所选笔记等)。
我需要具有简单Web界面的类似应用程序,理想情况下使用Node Js Express。
在努力使用Node Js Express 的同时,我开始在Python(Django)中编写类似内容。
我不知道哪个框架(Express或Django)更容易应对所有挑战。
这就是我在两个项目上工作的原因。
EDAMTest.js非常简单明了,但仅适用于控制台环境。
在这种情况下,Node Js Express对我来说比Django要好得多,但我认为使用Django它会更容易实现。
答案 0 :(得分:1)
如果我理解正确,您希望将具有相同标题的所有笔记的内容分组。首先要弄清楚的是数据结构。 python dict听起来合适,因为你关心来自音符标题的映射。由于音符标题可以映射到多个音符,因此映射应该可以是从字符串(音符标题)到字符串列表(具有该标题的所有音符的音符内容)。对于只有一个音符具有该标题的情况(可能是大多数情况),音符内容列表的大小为1.
自从我编写了python / django之后已经有一段时间了,但要使用你的代码片段:
title_contents = {}
for note in result_list.notes:
content = note_store.getNoteContent(auth_token,
note_store.getNote(note.guid,
True,False, False, False).guid)
note_content = html2text.html2text(BeautifulSoup(ENMLToHTML(content)).prettify())
existing_contents = title_contents.get(note.guid, [])
existing_contents.append(note_content)
title_contents[note.guid] = existing_contents
在最后,我们有一个看起来像这样的数据结构
{ 'test title': ['foo contents'], 'untitled': ['one content', 'another content']}
现在,在您的模板中,您需要遍历所有标题和其中的所有注释。您可能需要更正我的语法,但它看起来像这样:
<ul>
{% for title, content_list in title_contents %}
<li><b>{{ title }}</b><br>
{% for content in content_list %}
{{ content }}<br/>
{% endfor %}
{% endfor %}
</ul>
希望有意义!
答案 1 :(得分:1)
我终于找到了解决方案!
元组的字典
...
note_store.getNoteContent(auth_token,note.guid)
...
<ul>
{% for m,t in title_contents.items %}
<li><b>{{ t.0 }}</b><br>{{ t.1 }}</li>
{% endfor %}
</ul>
答案 2 :(得分:-2)
该错误意味着note.guid
是一个字符串,并且由于您将其用作列表索引,因此它必须是整数。
你可以使用
print(repr(note.guid), type(note.guid))
这样你就可以看到它是什么并相应地调整。
如果它是类似'3'
的字符串,那么您可以将其转换为:int(note.guid)