簡體   English   中英

Django 中的 Jsonresponse 在瀏覽器中工作,但不在 PostMan 或 Angular 中

[英]Jsonresponse in Django working in browser but not in PostMan or Angular

我正在嘗試從 Django 后端向我的 angular 前端發送 JSON 響應。

當我發出請求時,我在 Postman 或 Angular 中什么也沒有收到,但是,在瀏覽器中打開鏈接似乎返回了正確的結果

我的觀點是:

@api_view(['GET'])
def my_view(request):
    print(request.user.username)
    return JsonResponse({'username': request.user.username})

當我在瀏覽器中打開http://127.0.0.1:8000/accounts/get_username/時,我在 web 頁面上收到{"username": "aditya8010"} 但是當我使用 POSTMAN 發出請求時,我收到了

{
    "username": ""
}

與 Angular 相同

this.http.get("http://127.0.0.1:8000/accounts/get_username/").subscribe((res) => {
      
      this.username = JSON.stringify(res["username"])
      console.log(this.username,"  ", res)
    })

此代碼還打印一個空的用戶名字符串。

我注意到的另一件事是,當我從 POSTMAN 或瀏覽器調用時,我在視圖中的打印語句確實打印了我放在那里的任何隨機內容,但是當我使用 request.user.username 時,它在被 POSTMAN 調用時不打印任何內容。 而且每次響應碼都是200

我究竟做錯了什么。

當您發送請求時,您沒有提供身份驗證憑據(即識別發送請求的用戶的東西)。 您如何獲得此憑證?

您需要建立一種身份驗證方法。 有幾個,但我建議使用帶有knox package的令牌身份驗證。 基本上,您有一個使用用戶名和密碼登錄用戶的端點(正常的 json 發布請求)並且該端點返回一個令牌。 此令牌用於識別用戶。 您在需要驗證的每個請求的 header 中發送此令牌。 這意味着您可能應該為視圖包含 IsAuthenticated 權限。 在 postman 中: 郵遞員授權標頭

API 查看:

from rest_framework.permissions import IsAuthenticated

@api_view(['GET'])
@authentication_classes([IsAuthenticated])
def my_view(request):
    print(request.user.username)
    return JsonResponse({'username': request.user.username})

當它在瀏覽器中時,您的登錄信息會被記住在 session 中。 使用 postman 或 Angular 時,需要在請求 header 中手動提供用戶信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM