通过AJAX在Django中发送模型数据

1 投票
2 回答
1604 浏览
提问于 2025-04-18 05:46

我正在尝试通过ajax在django中发送模型数据。

我的view.py文件是这样的。

from django.core import serializers
def country(request):
    country = NewTable.objects.get(id=1)
    data = serializers.serialize('json',country)
    return HttpResponse(data,mimetype='application/json')

我的url.py文件是这样的。

from django.conf.urls import patterns, url
from myapp import views

urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^country/$', views.country) 

)

我的模板是这样的。

    function Country(){

    $.get('/myapp/country', function(data) {
    alert("hello");
}, "json" );

}

当我通过视图发送字符串时,我会收到一个提示消息,但现在当我发送模型数据时却没有收到任何提示消息。这是什么问题呢?

2 个回答

1

我找到了解决办法

这是 view.py 文件

from django.core import serializers
import json
    def country(request):
    obj_json = serializers.serialize('json', NewTable.objects.filter(id=1) )
    obj_list = json.loads( obj_json )
    json_data = json.dumps( obj_list )
    return HttpResponse( json_data, mimetype='application/json' )

这是模板部分

$.ajax({
type: "GET",
dataType: "json",
url:"/myapp/country",
success: function(data)
{
    alert("Hello");
},

});

1

我之前也遇到过类似的问题,后来我没有用django的序列化工具,而是改用了json.dumps,现在一切都正常了。

view.py

import json
def country(request):
    country = NewTable.objects.filter(id=1).values()
    return HttpResponse(json.dumps(country),content_type='application/json')

补充:我不太确定你能否在values()中使用get(),我在代码里用的是filter,这可能就是你代码不工作的原因。

撰写回答