Почему ссылка не работает в html и как это решить?
Когда я нажимаю кнопку "добавить в корзину", вместо страницы корзины отображается пустая страница.
product.html
<a class="btn btn-secondary" href="{% url 'cart:add_cart' product.id %}">Add to Cart</a>
cart.views
def add_cart(request, product_id):
product = Product.objects.get(id=product_id)
try:
cart = Cart.objects.get(cart_id=_cart_id(request))
except Cart.DoesNotExist:
cart = Cart.objects.create(cart_id=_cart_id(request))
cart.save()
try:
cart_item = CartItem.objects.get(product=product, cart=cart)
if cart_item.quantity < cart_item.product.stock:
cart_item.quantity += 1
cart_item.save()
except CartItem.DoesNotExist:
cart_item = CartItem.objects.create(
product=product,
quantity=1,
cart=cart
)
cart_item.save()
return redirect('cart:cart_detail')
Ваш URL, вероятно, неправильно конкатенирован. Попробуйте отладить ваш URL, который должен быть в атрибуте "href", и вы увидите, что, вероятно, здесь какая-то ошибка.
url корзины
from django.urls import path
from . import views
app_name = 'cart'
urlpatterns = [
path('add/<int:product_id>/', views.add_cart, name='add_cart'),
path('', views.cart_detail, name='cart_detail'),
path('remove/<int:product_id>/',views.cart_remove,name='cart_remove'),
path('full_remove/<int:product_id>/', views.full_remove, name='full_remove')
]
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
path('shop/',include('shop.urls')),
path('search/',include('search_app.urls')),
path('cart/',include('cart.urls')),
]
В вашем main.urls просто добавьте пространство имен в cart include.
добавим:
main.urls:
path('cart/',include('cart.urls',namespace='cart')),
ИЛИ
Если приведенный выше код не работает, попробуйте следующий код.
path('cart/',include(('cart.urls','url'),namespace='cart')),
Теперь это будет работать:
href="{% url 'cart:add_cart' product.id %}">
И посмотрим, решит ли это
вот результат, когда я нажимаю на кнопку product.html
{% extends 'base.html' %}
{% load static %}
{% block metadescription %}
{{ product.description|truncatewords:155 }}
{% endblock %}
{% block title %}
{% if category %}
{{ product.name }} -A&A store
{% endif %}
{% endblock %}
{% block content %}
<div class="row my_prod_row_class"
<div class="mx_auto">
<p><a href="{% url 'shop:allProdCat' %}">Home</a>|<a href="{{ product.category.get_url}}">{{product.category}}</a>|{{product.name}}</p>
</div>
<div class="container">
<br>
<div class="row">
<div class="col-12 col-sm-12 col-md-12 col-lg-6 text-center ">
<div style="min-width:18rem">
<img src="{{product.image.url}}" alt="{{product.name}}">
</div>
</div>
<div class="col-12 col-sm-12 col-md-12 col-lg-6">
<div>
<h1 class="my_prod_title">{{product.name}}</h1>
<p>{{product.price}}$</p>
<p class="my_title">product Description </p>
<p class="text-justify my_prod_text">{{product.description}}</p>
{% if product.stock <= 0 %}
<p class="text-justify my_prod_text"><b>Out of stock </b></p>
{% else %}
<a class="btn btn-secondary" href="{% url 'cart:add_cart' product.id %}">Add to Cart</a>
{% endif %}
</div>
</div>
</div>
</div>
{% endblock %}