我想为我的网页创建一个基于AJAX的搜索。到目前为止,我能够发送表单数据并对我的Django模型进行适当的调用。我遇到的困难是只发送QuerySet并使用Django模板系统呈现它。非常感谢您的帮助/建议。在Ajax请求之后返回用于模板呈现的Django模型
这是我正在使用的代码。
views.py
if request.is_ajax():
if request.method == 'POST':
format = 'json'
mimetype = 'application/json'
try:
q = request.POST['obj']
o = Object.objects.filter(name__icontains=q)
return render_to_response('project_view_objects.html', {'username': request.user.username, 'results':o})
view.html
<script>
$(document).ready(function(){
$("#search_form").submit(function(event)
{
event.preventDefault();
$.ajax({
type: "POST",
url: "/objects/search/",
data: $(this).serialize(),
processData: false,
dataType: "json"
});
});});
</script>
<article>
<blockquote>
<form class="create_form" id="search_form">
<p>
<input id="objectSearchNameInput" type="text" name="obj" value="Object name">
<input type="submit" value="search objects">
</p>
</form>
</blockquote>
</article>
<br />
{% if results %}
<blockquote>
<aside class="column">
{% for object in results %}
<b><a href="#" class="extra-text-special">{{ object.name }}</a></b><br />
{% endfor %}
</aside>
<aside class="column">
{% for object in results %}
<font class="extra-text-nospecial">{{ object.created_when }}</font><br />
{% endfor %}
</aside>
</blockquote>
{% else %}
<p>haha</p>
{% endif %}
目前,我所看到的页面上显示的是 '哈哈'。
你可以举一个代码示例吗? –
谢谢你的建议。我使用了render_to_string,然后以格式{'html':html}将呈现的html作为json返回,如果成功函数的参数名称为data,则可以通过data.html访问它。 –