我在构建网站时学习Python(& Django)。我已经设法学到了很多但是在理解可用的工具和我应该使用的工具方面遇到了问题。
我想解决的问题:
我有一个链接列表。单击链接时,我需要查询一些数据,然后在同一页面上显示该数据,而无需刷新或重新加载页面。
#urls.py
url(r'^post/query:(?P<minion_id>[^/]+)/$', views.get_miniondetail, name='get_miniondetail')
#views.py --note ignore file system it is a test output
def get_miniondetail(request, minion_id):
print 'in get_miniondetail: ' + minion_id + '\r'
detail = minion_id
context = {'minion_detail': detail}
html_string = '<html>' + detail + '</html>'
f = open('test.html', 'w+')
f.write(html_string)
f.close()
return HttpResponse(html_string, mimetype='text/plain')
<!-- html -->
<a href="post/query:{{ minion.name }}">{{ minion.name }}</a>
我应该调用javascript函数而不是映射到get_miniondetail
的url的链接吗?我还没能绕过表格。所以我想知道jQuery是否会完成我需要的工作......如果是的话,怎么做?
答案 0 :(得分:1)
要在不刷新或重新加载页面的情况下显示数据,您肯定需要某种类似jQuery或骨干的javascript框架。您使用django获取JSON提要,然后在浏览器端使用jQuery刷新页面的数据部分。
要检查的一些链接是 http://api.jquery.com/jquery.getjson/ http://backbonejs.org/
答案 1 :(得分:1)
您的代码中缺少许多内容或者没有使用django方式。但是既然你想让它发挥作用,我会建议你:
注意:代码尚未经过测试。但在您的代码中几乎没有要纠正的事情:
避免在网址中使用冒号。正斜杠会更清洁。
您在此处设置的上下文几乎没用,因为您没有在任何地方使用它来呈现模板。
如果您想在不刷新页面的情况下加载某些内容。你必须在Ajax电话。 jquery函数可能会派上用场。
#url.py
url(r'^post/query/(?P<minion_id>[^/]+)/$', views.get_miniondetail, name='get_miniondetail')
#views.py --note ignore file system it is a test output
def get_miniondetail(request, minion_id):
detail = minion_id
context = {'minion_detail': detail}
html_string = '<html>' + detail + '</html>'
f = open('test.html', 'w+')
f.write(html_string)
f.close()
return HttpResponse(html_string, mimetype='text/plain')
<a href="javascript:void(0);" id="link1">{{ minion.name }}</a>
<div id="result1"></div>
<script>
$('#link1').click($('#result1').load('post/query/{{ minion.name }}'));
</script>
答案 2 :(得分:0)
你在做一些非常奇怪的事情。最奇怪的是你出于某种原因将HTML输出写入文件系统:不仅没有理由这样做,而且你会立即在真实系统中遇到问题,因为很多不同的进程都会试图写到同一个地方。
但也有其他奇怪的事情:硬编码HTML字符串而不是使用模板;奇怪的URL格式;输出模板代码而不是渲染它......
你应该真的做这个教程。 你遇到问题的所有都在那里处理。