为什么Django中页面没有任何显示?

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

这里有一个问题,我的页面上有产品,每个产品都有自己的slug。该slug重定向到产品的个人页面,其中显示有关产品的所有必要信息(名称、描述、图像等)。但由于某种原因,该页面只是空的,即 html 文件中写入的内容没有显示,我不明白为什么。重定向没有错误,产品 slug 出现在 url 中,但没有产品信息。

P.s 在视图中,我使用 print 在终端中查看是否确实转到产品页面并获取产品名称。是的,我确实在终端中得到了它

views.py

def product_detail(request, post):
    product = get_object_or_404(ProductModel, slug=post)
    print(product.title)
    return render(request, 'products/detail-products.html', {
        'product': product,
    })

url.py

from django.urls import path

from products import views

app_name = 'products'

urlpatterns = [
    path('', views.products, name='products'),
    path('product/<slug:post>/', views.product_detail, name='product_detail'),
]

product.html - 这里有一个按钮可以重定向到个人信息页面。

<div class="button__more">
      <a href="{% url 'products:product_detail' product.slug %}"><button>Подробнее</button></a>
</div>

产品详细信息.html

{% extends 'main/base.html' %}
{% block title %}Detail {{ product.title }}{% endblock title %}

{% block content %}
  <style>
    .product__detail__photo img {
      width: 60%;
      height: auto;
      background-size: cover;
      object-fit: cover;
      border-radius: 5px;
    }
  </style>

  <div class="product__detail">
    <div class="product__image">
      {% if product.product_images %}
        <img src="{{ product.product_images.url }}" alt="product image">
      {% else %}
        <p>No image available</p>
      {% endif %}
    </div> 
    <div class="photo__detail__info">
      <div class="photo__detail__info__title">
        <h1>{{ product.title }}</h1>
      </div>
      <div class="photo__detail__info__description">
        <h1>{{ product.full_description }}</h1>
      </div>
    </div>
  </div>
{% endblock content %}

base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}{% endblock title %}</title>
</head>
<body>
    {% block content %}
    {% endblock content %}
</body>
</html>

我尝试过重写视图并使用不同的方式通过 slg 进行重定向,我尝试过通过 id 进行重定向,即使我不需要它。如果您打开产品的个人页面并且所有内容都输出正常,我什至可以将产品名称输出到控制台,但页面本身没有任何内容应该包含在 html 文件中。

我希望当您转到产品的详细页面时,我会显示 html 文件中记录的有关该产品的所有必要信息,但由于某种原因,这种情况没有发生,我不明白为什么会这样。终端没有错误。

python django django-views backend
1个回答
0
投票

您似乎将“product”上下文变量传递给detail-products.html 模板而不是product-detail.html。尝试解决这个问题。如果它不起作用,请尝试将另一个上下文变量传递给渲染函数,例如 'test': 'Test message',以检查模板是否正确填充了测试数据。

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