簡體   English   中英

如何使用 Javascript 在 ZEF0F93C83E374876A61DA0D4D 中使用經過身份驗證的用戶調用 Django API

[英]How to call Django API with Javascript with Authenticated user in Django

我使用 Django 作為后端,PostgresSQL 作為數據庫,HTML、CSS 和 Z9E13B69D1D2DAACAAAF7Z1 作為前端。 我通過 Javascript 打電話給 Django API。 用戶將產品添加到購物車的位置,我使用 DRF 調用購物車以向用戶顯示所有數據。 但問題是,用戶可以看到其他用戶的所有數據。 那么,經過身份驗證的用戶如何才能在購物車上看到他/她選擇的產品。

這是一個詳細的代碼:

視圖.py

adding product to cart

def addProduct(request):
    user = request.user
    product_id = request.GET.get('product_id')
    product_cart = Product.objects.get(id=product_id)
    Cart(user=user, product=product_cart).save()
    return render(request, 'cart/addtocart.html')

Api 查看 (views.py)

@api_view(['GET'])
def showproduct(request):
    if request.method == 'GET':
        result = Cart.objects.all()
        serialize = productserializers(result, many = True)
        return Response(serialize.data)

序列化程序.py

from .models import *
from rest_framework import serializers

class productserializers(serializers.ModelSerializer):
    class Meta:
        model = Cart
        fields = '__all__'
        depth = 1

Javascript 調用 Django API

$(document).ready(function() {
    $.ajax({
      url: 'http://127.0.0.1:8000/showproduct/',
      dataType: 'JSON',
      success: function(data){
        for (var i = 0; i < data.length; i++)
        {
          var row = 
          $('<tr> .. ..........</tr>');
          $("#table").append(row);
        }
      }
    });
});

現在,如何在特定購物車項目中顯示特定用戶(經過身份驗證的用戶)。

當您調用 ajax 時,您必須傳遞用戶 ID。 如果您使用GET方法而不是在URL中傳遞用戶 ID,並通過視圖中的參數訪問它,例如。

$(document).ready(function() {
    $.ajax({
      url: '{% url "showdata" %}',
      dataType: 'JSON',
      success: function(data){
        for (var i = 0; i < data.length; i++)
        {
          var row = 
          $('<tr> .. ..........</tr>');
          $("#table").append(row);
        }
      }
    });
});

在你的views.py

@api_view(['GET'])
def showproduct(request):
    if request.method == 'GET':
        result = Cart.objects.filter(user=request.user)
        serialize = productserializers(result, many = True)
        return Response(serialize.data)

並將其添加到您的urls.py

urlpatterns = [
   path("showdata/", views.showproduct, name='showdata')
]

更新

there is no need to pass user id in ajax URL if user is authenticated than user will come in request so please change you views.py , urls.py and ajax URL .

暫無
暫無

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

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