TemplateSyntaxError at / Could not parse the remainder: 'product.tk' from ''main-product-detail'product.tk'

问题描述 投票:0回答:1

我被困在一个我大部分时间都解决的问题上,但是现在,当我将链接放在产品详细信息页面的 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 %}"> 

改了好几次都没有定下来

python html django
1个回答
0
投票

在 Django 模板中,

url
是一个函数,它需要一个或多个用空格分隔的参数。在您的情况下,第一个参数是一个字符串:端点的名称,第二个是存储在
product.tk
变量中的主键。你只需要在它们之间放一个空格就可以了:

<a href="{% url 'main-product-detail' product.tk %}"> 

注意:检查模板中产品详细信息的端点名称。在

urls.py
中,您将其命名为
main-product-detail
,但有时您只使用
product-detail

© www.soinside.com 2019 - 2024. All rights reserved.