#javascript #python #django #e-commerce #internal-server-error
#javascript #python #django #электронная коммерция #внутренняя ошибка сервера
Вопрос:
Когда гостевой пользователь добавляет товары, это работает нормально, но когда зарегистрированный пользователь пытается добавить товар в корзину, он выдает ошибку.
Internal Server Error: /update_item/
Traceback (most recent call last):
File "C:UsersvaruniAppDataLocalProgramsPythonPython39libsite-packagesdjangocorehandlersexception.py", line 34, in inner
response = get_response(request)
File "C:UsersvaruniAppDataLocalProgramsPythonPython39libsite-packagesdjangocorehandlersbase.py", line 126, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:UsersvaruniAppDataLocalProgramsPythonPython39libsite-packagesdjangocorehandlersbase.py", line 124, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
TypeError: updateItem() missing 1 required positional argument: 'customer'
Вот мой update_item в views.py:
def updateItem(request, customer):
data = json.loads(request.body)
productId = data['productId']
action = data['action']
print('Action: ',action)
print('productId: ',productId)
product = Product.objects.get(id = productId)
order, created = Order.objects.get_or_create(customer = request.user.customer, complete= False)
orderItem, created = OrderItem.objects.get_or_create(order= order, product= product)
if action=='add':
orderItem.quantity = (orderItem.quantity 1)
elif action == 'remove' :
orderItem.quantity = (orderItem.quantity - 1)
orderItem.save()
if orderItem.quantity <= 0:
orderItem.delete()
return JsonResponse('item added', safe=False)
это мой store.html где определено действие кнопки добавить в корзину:
{% extends 'store/main.html' %}
{% load static %}
{% block content %}
<div class="row">
{% for prod in products %}
<div class="col-lg-4">
<img class="thumbnail" src="{{prod.imageURL}}">
<div class="box-element product">
<h6><strong>{{prod.name}}</strong></h6>
<hr>
<button data-product={{prod.id}} data-action="add" class="btn btn-outline-secondary add-btn update-cart">Add to Cart</button>
<a class="btn btn-outline-success" href="#">View</a>
<h4 class="d-inline float-right">{{prod.price}} Rs.</h4>
</div>
</div>
{% endfor %}
</div>
{% endblock content %}
Вот мой urls.py:
urlpatterns = [
path('', views.store, name='store'),
path('cart/', views.cart, name='cart'),
path('register/', views.registerPage, name='register'),
path('login', views.loginPage, name='login'),
path('logout', views.logoutPage, name='logout'),
path('checkout/', views.checkout, name="checkout"),
path('update_item/', views.updateItem, name="update_item"),
path('process_order/', views.processOrder, name="process_order"),
]
Пожалуйста, дайте мне знать, если требуется какая-либо другая информация.
Комментарии:
1. конечным точкам передается только запрос… но ваша функция написана таким образом, что для нее требуется второй аргумент customer (который не отправляется).
2. удалить
customer
параметр изupdateItems
параметров, т.е. Использоватьdef updateItem(request):
вместоdef updateItem(request, customer):
3. да, это сработало! Спасибо!!