我被困在一个我大部分时间都解决的问题上,但是现在,当我将链接放在产品详细信息页面的 home.html 文件中时,出现错误:TemplateSyntaxError at / 无法分析其余部分:''main-product-detail'product.tk'的'product.tk'我到处检查并修改了东西但没有改变。
看看我的代码,告诉我错误在哪里
意见
from django.shortcuts import render, redirect,get_object_or_404
from django.contrib.postgres.search import SearchVector
from django.db.models import Q
from main.models import Cart
from command.models import *
from notification.models import *
from user.models import *
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.viewsets import ModelViewSet
from rest_framework.viewsets import ReadOnlyModelViewSet
from main.serializers import ProductSerializer # CategorySerializer
from .utils import get_cart_data
import validators
from amazon import scrape, scrape_search
def home(request):
products = Product.objects.all()
product_recommadeds=Product.objects.all().order_by('-date')
# new_products= Product.objects.filter(date='')
cart_id = request.COOKIES.get('cart_id')
cart = None
cart_count = 0
if cart_id:
try:
cart = Cart.objects.get(id=cart_id)
cart = get_cart_data(cart)
cart_count = cart and len(cart['cart_products']) or 0
except Exception as e:
print(f'panier non trouvé: {e}')
response = render(request, 'main/home.html', locals())
if not cart and cart_id:
response.delete_cookie('cart_id')
return response
def product_detail(request,tk):
product = Product.objects.get(id=tk)
similar_products = Product.objects.annotate(search=SearchVector(
'name', 'description', 'keywords', 'price','color')).filter(Q(search=product.keywords) | Q(search__icontains=product.keywords.split(' ')))[:12]
product = vars(product)
if product['is_external'] and product['url']:
print(product['external_id'])
data = scrape(
external_id=product['external_id'], headers=request.META)
print('look data: ', data)
if data:
print(data)
product = {**product, **vars(data)}
is_in_cart = False
quantity = 1
try:
cart_id = request.COOKIES.get('cart_id')
cart_product = CartProduct.objects.get(
cart_id=cart_id, product_id=product['id'])
is_in_cart = True
quantity = cart_product.quantity
except Exception as e:
print(f'erreur dans product_detail: {e}')
print(locals())
return render(request, 'main/product_detail.html', locals())
主页 html:
</div>
</div>
<div class="axil-best-seller-product-area bg-color-white pb_sm--30 cardbottom">
<div class="container">
<div class="section-title-wrapper"> <span class="title-highlighter highlighter-secondary"><i
class="far fa-shopping-basket"></i>Nos Nouveaux Produits</span>
<h2 class="title">Decouvrez Nos Nouveautés</h2>
</div>
{% for product in products %}
<div
class="new-arrivals-product-activation-2 slick-layout-wrapper--15 axil-slick-arrow arrow-top-slide product-slide-mobile">
<div class="slick-single-layout">
<div class="axil-product product-style-three">
<div class="thumbnail"> <a href="{% url 'product-detail'product.tk %}"> <img class="product-image"
data-sal="zoom-out" data-sal-delay="100" data-sal-duration="1500" src="{{product.image_url}}"
alt="Produit Images">
</a>
<div class="product-hover-action">
<ul class="cart-action">
<li class="wishlist"><a href="#" class="btn-favorite" data-id="{{product.id}}"><i
class="far fa-heart"></i></a></li>
<li data-id="{{product.id}}" class="select-option btn-add-to-cart"><a
href="{% url 'cart' %}">Ajouter</a></li>
<li class="quickview"><a href="#" data-bs-toggle="modal" data-bs-target="#quick-view-modal"><i
class="far fa-eye"></i></a></li>
</ul>
</div>
</div>
<div class="product-content">
<div class="inner">
<h5 class="title"><a
href="{% url 'product-detail'product.tk %}">{{product.name|truncatechars:60}}</a></h5>
<div class="product-price-variant"> <span class="price current-price">${{product.price}}</span> </div>
</div>
</div>
</div>
</div>
{%endfor%}
网址
urlpatterns = [
path('', views.home, name='home'),
path('apropos/', views.about, name='about'),
path('contact/', views.contact, name='contact'),
path('panier/', views.cart, name='cart'),
path('products/<int:tk>/detail/', views.product_detail, name='main-product-detail'),#product detail urls
path('products/<int:id>/add_to_cart/',
views.add_product_to_cart, name='add_product_to_cart'),
path('external_products/<int:id>/', views.external_product_detail,
name='external_product_detail'),
path('external_products/<int:id>/add_to_cart/',
views.add_external_product_to_cart, name='add_external_product_to_cart'),
path('products/', views.home, name='products'), #product list urls
path('shop/', views.shop, name='shop'),
path('search/', views.search, name='search')
问题就在这里
<a href="{% url 'product-detail'product.tk %}">
改了好几次都没有定下来
url
是一个函数,它需要一个或多个用空格分隔的参数。在您的情况下,第一个参数是一个字符串:端点的名称,第二个是存储在 product.tk
变量中的主键。你只需要在它们之间放一个空格就可以了:
<a href="{% url 'main-product-detail' product.tk %}">
注意:检查模板中产品详细信息的端点名称。在
urls.py
中,您将其命名为main-product-detail
,但有时您只使用product-detail
。