我使用循环在导航栏上查看类别。导航栏包含在布局中,所有模板扩展了布局。我在navbar中放入循环以显示类别。如果我将上下文放在索引定义中,它正在起作用,但是如何在所有页面上显示循环?我认为我需要全局定义。
我的是Django 2.1.2,Python 3.5
view.py:
def index(request):
products = Product.objects.filter()
catloops = Category.objects.filter()
context = {
"products":products,
"catloops":catloops,
}
return render(request,"index.html", context)
def cat_nav(request):
catloops = Category.objects.filter()
context = {
"catloops":catloops,
}
return render(render, "????", context)
urls.py:
urlpatterns = [
path('admin/', admin.site.urls),
path('',views.index, name="index"),
path('about/',views.about, name="about"),
path('products/',include("product.urls")),
path('user/',include("user.urls")),
path('products/',views.products, name="products"),
path('myorders/',views.myorders, name="myorders"),
path('dashboard/',views.dashboard, name="dashboard"),
path('myprofile/',views.myprofile, name="myprofile"),
path('????',views.cat_nav, name="cat_nav"),
#user/register.. geldiğinde git user app'inden al
]
navbar.html:
<li class="nav-item dropdown menu-large"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Categories <b class="caret"></b></a>
<ul class="dropdown-menu megamenu">
<li>
<div class="row">
<div class="col-lg-6"><img src="{% static 'img/template-homepage.png' %}" alt="" class="img-fluid d-none d-lg-block"></div>
<div class="col-lg-3 col-md-6">
<h5>Used Products</h5>
<ul class="list-unstyled mb-3">
{% for category in catloops %}
<li class="dropdown-item"><a href="/products" class="nav-link">{{category.category_name}}</a></li>
{% endfor %}
如果我将上下文放入索引定义,则可以正常工作,但是当我转到其他页面(URL)时,看不到我的类别。
答案 0 :(得分:0)
为此您需要一个context processor。
基本上,在您的应用程序内部创建一个名为context_processors.py
的文件,并向其中添加以下代码:
def categories(request):
catloops = Category.objects.filter()
return {'catloops': catloops}
在您的settings.py中,在TEMPLATES列表中添加context_processor,添加您刚创建的文件:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'yourapp.context_processors.categories',
],
},
},
]
现在,在每个页面中,您都可以访问catloops
。
您可能需要重新启动服务器。