我正在使用Django的自定义身份验证后端(运行couchdb).我有一个自定义用户模型.
作为登录的一部分,我正在做一个request.user = user并在会话中保存用户ID.但是,在后续请求中,我无法检索request.user.它始终是AnonymousUser.但是,我可以从会话中检索用户ID,并确认正确设置了会话cookie.
我错过了什么?
我不想使用关系数据库,因为我想在couchdb中维护我的所有用户数据.
编辑:我写了一个不从Django的auth用户继承的类.但它具有用户名和电子邮件属性.出于这个原因,我的后端不会返回一个派生自auth User的类.
Run Code Online (Sandbox Code Playgroud)Cannot cast AnonymousUser to int. Are you trying to use it in place of User?
当我向我的网址发出发布请求时,我不确定如何调整我的代码以停止生成此错误。我已附加序列化器、视图和模型的代码。
class ActivitySessionSerializer(serializers.Serializer):
activity_name = serializers.CharField(min_length=1, max_length=100)
def create(self, validated_data):
activity, created = Activity.objects.get_or_create(name=validated_data['activity_name'],
owner=self.context['request'].user)
return ActivitySession.objects.create(activity=activity, start_time=datetime.datetime.now())
class StartSessionView(generics.CreateAPIView):
serializer_class = serializers.ActivitySessionSerializer
User = get_user_model()
class ActivityType(models.Model):
name = models.CharField(max_length=100)
user = models.ForeignKey(User, on_delete=models.CASCADE)
class Activity(models.Model):
name = models.CharField(max_length=100)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
activity_type = models.ForeignKey(ActivityType, on_delete=models.CASCADE, null=True, blank=True)
class ActivitySession(models.Model):
activity = models.ForeignKey(Activity, on_delete=models.CASCADE)
start_time = models.DateTimeField()
end_time = models.DateTimeField()
urlpatterns = [ …Run Code Online (Sandbox Code Playgroud)