django - django navbar 我如何将产品 pk 传递给每个不同的链接
问题描述
这是一个关于如何将产品模型 pk 传递到导航栏的问题,其中调用可以来自不同的页面/视图,即并不总是来自产品详细信息页面。
我正在为导航栏使用基本模板,然后我有一个 html 页面和导航栏中每个链接的视图,如下所示:
产品详情 - product_form.html
-views.ProductUpdateView.as_view()
颜色 - productcolours_list.html
-views.ProductColourListView.as_view()
导航栏的想法是,例如,一旦我查看产品 A,我可以在产品详细信息页面、产品颜色和材料清单之间单击。这是导航栏代码的样子:
<li class="nav-item">
<a class="nav-link" href="{% url 'ProductUpdateView' pk=product.pk %}">Product Details</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'ProductColourListView' pk=product.pk %}">Colours</a>
</li>
问题是这仅在我在“产品详细信息”页面上时才有效,因为基本模板可以解释 product.pk 是什么。但是当我点击导航栏中的颜色链接时,它会尝试渲染基本模板,突然之间它不知道 product.pk 是什么。
这是因为 Product Details 页面通过 ProductUpdateView 使用 Product 模型(然后我可以使用它来引用 product.pk),但 Colors 页面通过 ProductColourListView 使用 ProductColour 模型,在这种情况下它将是 colours.product.pk。
就像我需要基本模板来了解从哪里获取 pk,具体取决于我来自产品详细信息页面、颜色页面还是其他页面。
解决方案
为什么不将产品放在不将产品作为单个对象操作的视图中?
class ProductColourListView(generic.ListView):
model = models.ProductColour
def get_context_data(self, **kwargs):
kwargs.setdefault('product', put_here_your_product)
return super().get_context_data(**kwargs)
推荐阅读
- ruby-on-rails - 以相同的方式使两个操作可以访问参数。参数[:user][:form]
- java - 如何正确索引 @RequestMapping 中的路径,这是 JsonNodeTree 的路径?
- php - Laravel MYSQL 触发器
- python - 为什么 Pytorch Dropout 层会影响所有值,而不仅仅是设置为零的值?
- python - 如何在python 3中同时删除嵌套列表的行和列
- java - 切换到 iframe 并单击元素不起作用并获得 StaleElementReferenceException
- mysql - 如何使用值填充 MySQL 表中的一列而不出现“未使用所有参数”编程错误?
- python - 增加 Tornado 中 BaseIOStream 的 max_buffer_size 限制
- html - 引导程序中的“row-fluid”问题,为什么我的“divs”正在跳线?
- batch-file - 如何批量嵌套变量