从 django views.py 获取数据并使用 ajax 显示它
Posted
技术标签:
【中文标题】从 django views.py 获取数据并使用 ajax 显示它【英文标题】:Getting data back from django views.py and using ajax to display it 【发布时间】:2012-03-16 22:58:48 【问题描述】:已编辑
我正在尝试使用 jquery/ajax 来显示从 django 方法返回的数据。
我有一个名为keywordBtn 的html 按钮。所以当它被按下时,updateKeywordSubscribed 方法将被调用。
但是,django 没有返回我的对象。我的方法有问题吗?
如果成功,div 部分名称“update”将显示该 json 列表中的单词列表。
我的 html 中有什么:
<script type="text/javascript">
$(document).ready(function()
$("#keywordBtn").click(function(e)
updateKeywordSubscribed(e, "#keywords");
);
);
function updateKeywordSubscribed(e, keywords)
e.preventDefault();
var option_form = jQuery(e.target);
$.ajax(
url : option_form.attr('action'),
type : option_form.attr('method'),
data : option_form.serialize(),
dataType : 'json',
success : function(response) alert ('sometext'))
</script>
我的观点.py:
def keyword_subscribe(request):
if 'keyword_input' in request.POST:
if 'name_input' in request.POST:
xhr = request.GET.has_key('xhr')
response_dict =
new_keyword = request.POST['keyword_input']
username = request.POST['name_input']
response_dict.update('keyword_input': new_keyword, 'name_input': username)
power_keyword = subscribe_keyword(username,keywords)
if power_keyword:
response_dict.update('success':True)
else:
response_dict.update('errors':)
if not username:
response_dict['errors'].update('name_input': 'User ID is required')
if not total and total is not False:
response_dict['errors'].update('keyword_input': 'Keyword field is blank')
if xhr:
return HttpResponse(simplejson.dumps(response_dict), mimetype='application/javascript')
return render_to_response('r2/userprofile_list.html', response_dict)
【问题讨论】:
我只需要了解 jquery 如何从 views.py 中读取数据。剩下的我可以填写。 【参考方案1】:我正在做一些类似于你在我当前项目中需要的事情。
我得到这个邮政编码视图,它返回一个 geojson 结果或 null
我的看法:
def get_zipcode(request, latitude, longitude):
# Point on a map
point = GEOSGeometry('POINT(%s %s)' % (longitude, latitude))
try :
zipcodes = Zipcode.objects.filter(mpoly__contains=point)
return HttpResponse(zipcodes[0].mpoly.geojson, mimetype="application/json")
except :
return HttpResponse(json.dumps(None), mimetype="application/json")
我的 mimetype 是 application/json 而不是 application/javascript
我的网址:
url(r'^collision/zipcode/(?P<latitude>(\-|)\d+\.\d+)/(?P<longitude>(\-|)\d+\.\d+)/', 'core.views.get_zipcode', name='collision-zipcode'),
调用并处理json结果的JS
$.ajax(
url : '/collision/zipcode/' + latitude + '/' + longitude + '/',
dataType : 'json',
type : 'GET',
success: function(data)
var paths = coord_to_paths(data.coordinates);
var polygon = new google.maps.Polygon(
paths : paths,
strokeColor : "#FF7800",
strokeOpacity : 1,
strokeWeight : 2,
fillColor : "#FF7800",
fillOpacity : 0.6
);
polygon.setMap(map);
console.log("adding zipcode polygon");
);
请注意,如果您正在检索 json,如果您将 dataType 设置为 'json',您应该以 JS native 的身份访问成功函数中的数据。
如果您需要调试 jquery 实际检索的数据,请执行
console.log(data);并使用浏览器查看开发控制台(chrome/ff 我不知道其他浏览器是否支持此功能)
【讨论】:
哇弗朗西斯,好答案,你能帮我看看成功函数的哪个部分是从视图传递的数据吗? 在我的示例中,我的 ajax 成功函数采用单个参数“数据”,即 json 响应。看起来您的 ajax 成功函数将其称为响应。你应该 console.log 看看你得到了什么。如果我不得不猜测,你认为有问题并且它没有返回好的 json,所以你的成功函数不知道如何处理它。以上是关于从 django views.py 获取数据并使用 ajax 显示它的主要内容,如果未能解决你的问题,请参考以下文章
如何从views.py 中获取值并在html 模板中使用它?
django/ajax:无法在 views.py 中获取 Ajax 发布数据