我正在使用Django REST框架。我有一个看起来像这样的模型:
class Post(models.Model):
title = models.CharField(max_length=100, null=False)
content = HTMLField()
created_at = models.DateField(auto_now_add=True)
authors = models.ManyToManyField(User)
具有如下所示的api视图和序列化器:
class CreateStoryApiView(CreateAPIView):
serializer_class = PostSerializer
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('title', 'content', 'authors')
到实际的终点,我实际上可以成功提交。我正在尝试使用Ajax来获取详细信息并将数据提交到端点,但是由于某些原因,我总是收到400错误的请求错误。如果删除作者字段,则不会出现该错误。这是Ajax请求的样子:
$.ajax({
type: 'POST',
url: '/api/save-post/',
data: {
"csrfmiddlewaretoken": getCookie('csrftoken'),
"title": "dasf",
"desct": "dasf",
"content": "fdasf",
"authors": [1,2]
},
success: function (msg) {
console.log(msg);
}
});
尝试此Ajax请求时收到400错误请求。为什么无法成功提交阵列?我尝试了"authors[]": [1,2]
和"authors": "[1,2]"
以及许多其他组合,但是由于某种原因,似乎没有任何效果。我在做什么错了?
答案 0 :(得分:0)
检查您的django settings.py文件。 您需要正确配置下一个参数才能发布来自另一台服务器的请求。
CORS_ORIGIN_WHITELIST = (
'localhost',
'your-domain.com',
'127.0.0.1',
'127.0.0.1:8080'
)
CSRF_TRUSTED_ORIGINS = (
'your-domain.com',
)
CORS_ORIGIN_ALLOW_ALL = True
CORS_EXPOSE_HEADERS = [
'Access-Control-Allow-Origin',
'Access-Control-Allow-Headers'
]
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'cache-control',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
)
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
)
我怀疑是因为它