我正在使用python2.7,django1.6和apache2。我启用了跨域访问。我尝试过使用和不使用crsf令牌。我不知道我做错了什么。
来访: URL /到/网站/联系人/ API / V1 / adresponses / 1 工作正常,因此设置了tastypie。我可以看到广告回复。
有人请帮忙。我一直试图让tastypie工作好几天。
这是我的api.py
class UserResource(ModelResource):
class Meta:
queryset = User.objects.all()
resource_name = 'user'
fields=['username', 'id']
allowed_methods = ['get']
authorization = Authorization()
authentication = Authentication()
class AdResponsesResource(ModelResource):
users = fields.ManyToManyField('contacts.api.UserResource', 'users',
related_name='adresponse')
class Meta:
queryset = AdResponses.objects.all()
resource_name = 'adresponses'
authorization = Authorization()
authentication = Authentication()
这是我的ajax电话
$(function (){
$.ajax({
url: 'url/to/site/contacts/api/v1/adresponses/1',
type: 'GET',
accepts: 'application/json',
dataType: 'json'
});
所以我不完全确定为什么我的原始发布的js不起作用但是我看到了这个例子http://django-tastypie.readthedocs.org/en/latest/cookbook.html并且它按预期工作。也许是因为我没有成功的功能?
$.ajax({
url: '../../api/v1/user/',
contentType: 'application/json',
type: 'GET',
success: function(data, textStatus, jqXHR) {
// Your processing of the data here.
console.log(data);
}
});
答案 0 :(得分:1)
我需要看到为api设置的网址才能为您提供更多帮助,但对于初学者来说,您提供了原始网址:
url: 'url/to/site/contacts/api/v1/adresponses/1',
和你答案中的那个
url: '../../api/v1/user/',
不要调用相同的资源,这使得诊断更加困难。
但是,第一个网址是绝对路径,第二个网址是相对路径,这可能会导致您的ALLOWED_HOSTS设置出现问题,而这可能会产生400错误。
所以试试这个:
$.ajax({
url: '../../api/v1/adresponses/1',
contentType: 'application/json',
type: 'GET',
success: function(data, textStatus, jqXHR) {
console.log(data);
}
});
是,如果没有成功功能,您将看不到任何结果:
success: function(data, textStatus, jqXHR) {
console.log(data);
}
console.log是让你在控制台中看到结果的原因。
您的原始代码未提供:
contentType: 'application/json',
你有:
accepts: 'application/json',
答案 1 :(得分:0)
我认为问题在于使用" /"在网址的末尾是强制性的。 您应该尝试使用网址:' url / to / site / contacts / api / v1 / adresponses / 1 /',
当您访问url / to / site / contacts / api / v1 / adresponses / 1时,它会重定向到url / to / site / contacts / api / v1 / adresponses / 1 /,具体取决于您的tastypie配置