如何使用一个视图重定向到不同的页面

时间:2016-03-23 18:11:38

标签: django django-views

现在我有6个按钮,每个人都会重定向到包含课程的页面, 这个方法适用于一个按钮,

Views.py

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课程的按钮,商业,语言等等。 它运作良好,但我是否必须为每个按钮制作不同的视图,并且所有语法都具有相同的语法,或者是否有另一种方法可以在同一视图中制作它? 感谢

1 个答案:

答案 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)