现在我有6个按钮,每个人都会重定向到包含课程的页面, 这个方法适用于一个按钮,
def categories_pages(request):
if request.user.is_authenticated():
courses = Course.objects.filter(
published_date__lte=timezone.now(),
categories__name__icontains="IT"
).order_by('published_date')
context = {
"courses": courses
}
return render(request, 'categories/categories-page.html', context)
{% for instances in courses %}
<div class="col-sm-6 col-md-4">
<div class="thumbnail">
<img src="{{ instances.img }}" alt="{{ instances.name }}">
<div class="caption">
<h3>{{ instances.name }}</h3>
<p>{{ instances.description }}</p>
<p><a href="#" class="btn btn-primary" role="button">Button</a> <a href="#" class="btn btn-default" role="button">Button</a></p>
</div>
</div>
{% endfor %}
这个IT课程的按钮,商业,语言等等。 它运作良好,但我是否必须为每个按钮制作不同的视图,并且所有语法都具有相同的语法,或者是否有另一种方法可以在同一视图中制作它? 感谢
答案 0 :(得分:1)
您需要定义您的网址以将该类别作为命名参数,因此您的视图将采用该额外参数并查询该课程:
URL:
url(r'^categories/(?P<course_name>\w+)/$', views.categories_pages)
views.py
def categories_pages(request, course_name):
if request.user.is_authenticated():
courses = Course.objects.filter(
published_date__lte=timezone.now(),
categories__name__icontains=course_name
).order_by('published_date')
context = {
"courses": courses
}
return render(request, 'categories/categories-page.html', context)