如何在Django中使用经过身份验证的用户使用Javascript调用Django API

桑托什·乔汉

我使用 Django 作为后端,PostgresSQL 作为 DB,HTML、CSS 和 Javascript 作为前端。我正在通过 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

调用 Django API 的 Javascript

$(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方法不是传入用户 IDURL并通过视图中的参数访问它,例如。

$(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')
]

更新

URL如果用户已通过身份验证,则无需在 ajax 中传递用户 ID,因为用户将进入,request因此请更改您views.pyurls.py并且ajax URL

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Axios使用经过身份验证的API

如何在api调用中使用令牌对用户进行身份验证?

在流星应用中,如何代表用户进行经过身份验证的Google API调用?

如何在Rails REST API应用程序中使用Devise进行身份验证?

如何在API路由中使用身份验证

如何使用API调用在Laravel上对Auth :: check()用户进行身份验证

如何在Node.js中使用需要用户名/密码身份验证的REST API

如何使用Google表格从经过Bitfinex身份验证的api端点获取数据?

使用AWS Amplify经过身份验证的用户与ALB或API网关进行通信?

如何在Django中使用Pytest测试经过身份验证的POST请求

对eXist-db中的REST API使用经过身份验证的会话/用户

如何使用github api从经过身份验证的用户那里获得正式/大师身份?

如何在应用程序脚本gmail中的请求标头中使用具有身份验证的Firebase API用户添加在项目上

如何测试使用django-rest-auth令牌身份验证的API?

如何使用Facebook API邀请经过身份验证的Facebook用户应用和游戏组?

Google远程API允许仅使用经过身份验证的用户进行写操作

使用API调用的ZAP身份验证

如何在Web API中获取经过身份验证的用户名(基于令牌的身份验证)

Django Rest API:使用令牌身份验证将当前用户添加到用户字段

如何在 ruby 中使用身份验证发送 api 请求

如何测试使用 Rails 5 创建的经过身份验证的 API?

如何使用 Passport.js 对 Google API 进行后续经过身份验证的调用

在 Django (DRF) 中使用外部 API 进行基于令牌的身份验证

如何使用基于 Web 应用程序的身份验证在 Python Django 中使用 Microsoft 图形 API (python-o365) 发送和读取邮件?

如何在 Google Analytics Reporting API 中使用 OAuth2 进行身份验证?

如何使用 API Gateway Cognito Authorizer 对访客/未经身份验证的用户进行身份验证?

如何在 DRF 中使用 api 并在 python 中进行身份验证

如何在django中使用具有基本身份验证(用户名,密码)的第三方api?

Django - 让用户登录身份验证检查每个 REST API 调用