我写了一个Django for循环,它迭代Supplier模型的每个示例,并在导航栏中呈现每个示例,但由于某些原因,它只在我的一个模板上输出,而不是主页面。
<ul class="nav-drop">
{% for supplier in suppliers %}
<li>
<a href="{% url 'supplier' pk=supplier.pk %}">{{ supplier.name }}</a>
</li>
{% endfor %}
</ul>
下面是我的views.py文件:
x一个一个一个一个x一个一个二个x
以及所讨论的模型:
class Supplier(models.Model):
name = models.CharField(max_length=200, blank=True, null=True)
logo_image = models.ImageField(null=True, blank=True, upload_to='models/',
default="models/default.jpg")
marketing_image = models.ImageField(null=True, blank=True, upload_to='models/',
default="models/default.jpg")
description = models.TextField(blank=True, null=True)
short_description = models.TextField(max_length=200, blank=True, null=True)
social_facebook = models.CharField(max_length=200, blank=True, null=True)
social_twitter = models.CharField(max_length=200, blank=True, null=True)
social_instagram = models.CharField(max_length=200, blank=True, null=True)
social_youtube = models.CharField(max_length=200, blank=True, null=True)
social_linkedin = models.CharField(max_length=200, blank=True, null=True)
social_website = models.CharField(max_length=200, blank=True, null=True)
created = models.DateTimeField(auto_now_add=True)
id = models.UUIDField(default=uuid.uuid4, unique=True,
primary_key=True, editable=False)
我已经试了几个小时了,但不幸的是,我无法想出一个解决办法
1条答案
按热度按时间alen0pnh1#
看起来您只在其中一个视图中传递供应商列表。因此,一个视图有要呈现的内容,而另一个视图没有,基本的解决方案是在所有视图的上下文中添加供应商。
正如你所看到的,这违背了DRY原则,使你的代码变脏。一个可能的解决方案是创建一个视图,从你的base.html(你可能在其中包含了navbar)发送一个 AJAX :
base.html
navbar.html
views.py
urls.py
我保留了两个下拉菜单,因此您可以看到操作中的不同。