gpt4 book ai didi

django - 如何访问 jQuery.ajax() 在 Django View 中获取参数

转载 作者:行者123 更新时间:2023-12-01 04:21:13 29 4
gpt4 key购买 nike

我最近开始学习 jQuery,现在我正在使用 .ajax() 函数。

我不知道如何访问 Django 中的 get 参数。

我的代码如下:

Jquery 和 html:

<div id="browser">
<ul>

{% comment %}
Theres a script for each ctg. Each script fades out #astream, fades in #stream_loading and then it should display #astream with new values based on the GET param in ajax call
Prolly it wont work, but first I need to interact with the GET param in my views.py
{% endcomment %}

{% for ctg in ctgs %}
<script type="text/javascript" charset="utf-8">
(function($) {
$(document).ready(function() {
$("#stream_loading").hide()

$("#browse_{{ctg}}").click(function() {

$("#astream").fadeOut()
$("#stream_loading").fadeIn()

$.ajax({
type: "GET",
url: "/{{defo}}/?param={{ctg}}",
success: function() {
$("#stream_loading").fadeOut()

$("#astream").fadeIn()
}
});
});
});
})(jQuery);
</script>
<li><a id="browse_{{ctg}}" title="{{ctg}}">{{ctg}}</a></li>
{% endfor %}
</ul>
</div>
<div id="astream">
{{ajaxGet}} #just to see whats rendered
{% include "astream.html" %}
</div>

<div id="stream_loading">
loading stream, please wait ...
</div>

Django :

@https_off
def index(request, template='index.html'):

request.session.set_test_cookie()

path=request.META.get('PATH_INFO')
defo=path[1:path[1:].find('/')+1]
request.session['defo']=defo
defo=request.session['defo']

# build the stream sorted by -pub_date
import itertools

chained=itertools.chain(
model1.objects.order_by('-pub_date').filter(),
model2.objects.order_by('-pub_date').filter(),
)

stream=sorted(chained, key=lambda x: x.pub_date, reverse=True)

ajaxGet=request.GET.get('param','dummy')

if request.is_ajax():
template='astream.html'
ajaxGet=request.GET.get('param',False)

renderParams={'defo':defo, 'stream':stream, 'ajaxGet':ajaxGet}

return render_to_response(template, renderParams, context_instance=RequestContext(request))

然后我尝试将其显示在我的模板中

{{ ajaxGet }}

但每次都呈现为“虚拟”

在 firebug 中,我可以看到具有正确键和值的 get 请求。

我在这里想念什么?

谢谢

最佳答案

人们在进行这种 Ajax 时经常会遇到一个常见问题,这并不会阻止链接/按钮的默认操作。因此,您的 Ajax 函数永远没有机会触发,并且您在 Django 代码中看到的请求是由正常页面加载引起的 - 这就是 is_ajax() 的原因。是假的。

click处理程序参数,event ,并调用event.preventDefault();在函数末尾。

关于django - 如何访问 jQuery.ajax() 在 Django View 中获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10352434/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com