django - AJAX POST 数据似乎没有命中 Django Rest Framework API Endpoint
问题描述
我正在尝试使用 AJAX 和 DRF 构建一个用户可以关注另一个用户的功能。但是,当我启动它时,发布的数据似乎没有到达 DRF 端点,所以我没有收到任何错误:
{user: ["This field is required."], following_user: ["This field is required."]}
following_user: ["This field is required."]
user: ["This field is required."]
这是我的js函数:
const followUser = function(followedUser){
var pathArray = window.location.pathname.split('/');
var currentUser = pathArray[1];
console.log("Following" + " " + followedUser);
$.ajax({
type: 'POST',
url: '/api/userconnections/',
data: {
csrfmiddlewaretoken: document.querySelector('input[name="csrfmiddlewaretoken"]').value,
'current_user': currentUser,
'followed_user': followedUser
},
success: function(data) {
alert('Successfully Followed')
}
});
}
这是我的序列化程序:
class UserConnectionListSerializer(serializers.ModelSerializer):
user = serializers.StringRelatedField()
following_user = serializers.StringRelatedField()
class Meta:
model = UserConnections
fields = ['user','following_user']
class UserConnectionSerializer(serializers.ModelSerializer):
class Meta:
model = UserConnections
fields = '__all__'
这是视图功能:
class UserConnectionsViewSet(viewsets.ModelViewSet):
serializer_class = serializers.UserConnectionListSerializer
queryset = UserConnections.objects.all()
def get_serializer_class(self):
"""IF this is a form post, use the basic serializer that
deals with id (primary key) otherwise give the more sophisticated
version that deals with actual username"""
if self.request.method == 'POST':
return serializers.UserConnectionSerializer
return self.serializer_class
def follow_user(request):
if request.method == "POST":
data = {'user': request.DATA.get('current_user'), 'following_user': request.DATA.get('followed_user')}
serializer = UserConnectionListSerializer(data=data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
解决方案
推荐阅读
- javascript - 量角器——任何测试开始前的 TimeoutError
- python - 程序将字符串而不是整数相加
- javascript - 如何将一个组件呈现在另一个组件之上?
- asp.net-mvc - 为什么我不能返回 Null 值?
- javascript - 我有一个带有 dropzone.js 的 dropzone,但它不适用于移动设备
- graph - 使用带有父层次结构检查的 gremlin 查询 ACL 图
- c - 将字符串文字分配给 char[] 是如何工作的?
- javascript - 从另一个元素触发淡入/淡出会导致淡入淡出元素在切换触发元素时卡住
- r - 为一张图使用多个数据集
- javascript - 使用 JQuery 创建 javascript 函数