我正在尝试将django 1.9升级到django 2.0。 GET()正常工作,但是POST()中出现错误。
我的views.py
是:-
class AccountInfoUpdate(APIView):
authentication_classes = [IsAuthenticated]
def post(self, request):
user = request.user
user_profile = UserProfile.objects.get(user=user)
name = False
contact = False
if "name" in request.data:
user_profile.name = request.data.get('name')
user_profile.save()
name = True
if "contact" in request.data:
user_profile.contact = request.data.get('contact')
user_profile.save()
contact = True
if user_profile.affiliate_code is not None and (name or contact):
result = service.update_affiliate(user_profile.affiliate_code, name=user_profile.name,
contact=user_profile.contact)
return Response({'Message': 'Account info updated successfully!'})
我收到此错误:-
user_auth_tuple = authenticator.authenticate(self)
rest_framework.request.WrappedAttributeError: 'IsAuthenticated' object has no attribute 'authenticate'
如果我从REST_FRAMEWORK中删除或评论了'rest_framework.authentication.SessionAuthentication',
,那么我会收到此错误CSRF Failed: CSRF token missing or incorrect
。
我尝试了permission_classes = [IsAuthenticated]
并在Postman上放松了,但仍然遇到相同的错误。
答案 0 :(得分:2)
IsAuthenticated
是Permission Class
而非Authentication
类。所以应该是
class AccountInfoUpdate(APIView):
permission_classes = [IsAuthenticated]
# your code
UPDATE-1
如何解决CSRF Failed
错误
1. 在POSTMAN中打开一个新标签
2.提供网址(1)
3.转到Authorization
选项卡(2)并设置Basic Auth
,然后提供您的用户名和密码
4.然后转到Body
标签,然后输入JSON负载。
5.点击send
按钮。你去那里
答案 1 :(得分:1)
我也以下列方式收到此错误“rest_framework.request.WrappedAttributeError: 'IsAuthenticated' object has no attribute 'authenticate'”错误:
我的登录代码有:
def post(self, request,):
username = request.data.get("username")
password = request.data.get("password")
user = authenticate(username=username, password=password)
当我收到错误时,REST_FRAMEWORK 在 settings.py 中包含以下内容:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
}
后来我也添加了以下内容,我的错误消失了:
REST_FRAMEWORK = {
......
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
)
}
您可以尝试提供反馈。
答案 2 :(得分:0)
public class MyXAxisValueFormatted implements IAxisValueFormatter{
private String[] mValues;
public MyXAxisValueFormatted(String[] values){
this.mValues = values;
}
@Override
public String getFormattedValue(float value, AxisBase axis) {
return mValues[(int) value];
}
}
问题已由前端站点解决,但仍无法在邮递员方面使用。无论如何,经过漫长的RND之后,我的问题通过link从前端解决了。