首页 > 解决方案 > request.user 即使用户登录也返回 AnonymousUser

问题描述

我想在将对象保存到数据库时创建一个用户,但每次它说用户是 AnonymousUser 即使用户已登录,下面是一个片段,任何帮助将不胜感激。

 def post(self, request):
    response = json.loads(self.request.body.decode('utf-8')) 

    result_code = response["Body"]["stkCallback"]["ResultCode"]

    if result_code == 0:
        if response["Body"]["stkCallback"]["CallbackMetadata"]["Item"][2]["Name"] == 'Balance':
            del response["Body"]["stkCallback"]["CallbackMetadata"]["Item"][2]

        amount = response["Body"]["stkCallback"]["CallbackMetadata"]["Item"][0]["Value"]
        mpesa_receipt_number = response["Body"]["stkCallback"]["CallbackMetadata"]["Item"][1]["Value"]
        transaction_date = response["Body"]["stkCallback"]["CallbackMetadata"]["Item"][2]["Value"]
        phone_number = response["Body"]["stkCallback"]["CallbackMetadata"]["Item"][3]["Value"]

        str_transaction_date = str(transaction_date)
        transaction_datetime = datetime.strptime(
            str_transaction_date, "%Y%m%d%H%M%S")
        aware_transaction_datetime = pytz.utc.localize(
            transaction_datetime)

        our_model = Mpesa.objects.create(
            Paid_user=request.user
            MpesaReceiptNumber=mpesa_receipt_number,
            PhoneNumber=phone_number,
            Amount=amount,
            TransactionDate=aware_transaction_datetime,
        )

        our_model.save()

标签: djangodjango-modelsdjango-rest-frameworkdjango-views

解决方案


你需要permission_classes 像这样在你的视图中添加 -

from rest_framework.permissions import IsAuthenticated

class SomeView(APIView):

    permission_classes = [IsAuthenticated]

    def post(self, request, format=None):
        # now here in your post you will be able to use `request.user` to know the user requesting this view.
        pass

我希望这就是你要找的。


推荐阅读