我正在构建一个使用Django的应用程序(以及Django Rest Framework),我想使用Token Based Authentication。我不是100%清楚如何在运行时将用户与我的模型相关联。
所以,I'll receive a POST request in my View:
if request.method == 'POST':
....
serializer.save()
然后,the flow will go to the post save receiver:
@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_auth_token(sender, instance=None, created=False, **kwargs):
if created:
Token.objects.create(user=instance)
我想在我的模型中,我需要一个对用户的引用。但是如何在视图中获得新用户或现有用户? 我想这将是我的模特:
class UserPostData:
some_info = models.DateField()
user = models.OneToOneField(User)
但是如何处理用户与我刚刚保存在视图中的模型的关联?
if request.method == 'POST':
# get_or_create_user()? But there's no username. It's token based auth
serializer.save()
答案 0 :(得分:1)
如果请求已通过身份验证,则可以从请求中提取用户对象。
例如,您可以覆盖序列化程序的方法create
并从上下文中获取请求,如下所示:
class UserPostDataSerializer(ModelSerializer):
...
def create(self, validated_data):
user = self.context['request'].user
new_model = UserPostData.objects.create(user=user,
**validated_data)
new_model.save()
return new_model
...