我使用 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.py
,urls.py
并且ajax URL
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句