使用django在tab nav bootstrap中使用for循环标记

时间:2016-03-27 20:16:21

标签: html django twitter-bootstrap

我在使用for循环标记时遇到问题,对于标签很好但是标签内容中id的引用本身就是问题,因为我无法访问{{spec}}中的即时值如何使用导航药标签自定义我的网址以显示与专业化相关的课程

category_page.html

<!-- This is tabs with for loop for data in specializations worked well-->
     <div class="row" >
                <div class="list-group col-md-4" role="navigation">
                  {% for specs in spec %}
                        <button type="button" class="list-group-item" data-toggle="tab" href="{{ specs }}">{{ specs }}</button>

                  {% endfor %}
                </div>
<!-- Here is the tab content and it doesn't work well as I need data appears related to the tab itself --> 
                <div class="col-md-8">
                    <div class="tab-content ">
                        {% for specs in spec %}
                    <div id="{{ specs }}" class="tab-pane fade ">
                            <div class="row">
                                {% for instances in courses_spec %}
                                    <div class="col-sm-6 col-md-6">
                                          <div class="caption">
                                            <h3>{{ instances.name }}</h3>
                                          </div>
                                    </div>

                                {% endfor %}


                    </div>
                </div>

views.py

def categories_pages(request, category_name, speci_name=None):
    courses = Course_dir.objects.filter(
        availability=True,
        id_CO__id_S__name=category_name
    ).order_by('date')

    courses_spec = Course_dir.objects.filter(
        availability=True,
        id_CO__name=speci_name
    ).order_by('date')

    spec = Specialization.objects.filter(
        id_S__name__contains=category_name
    ).order_by('name')
    context = {
        "courses": courses,
        "spec": spec,
        "courses_spec": courses_spec
    }
    return render(request, 'categories/categories-page.html', context)

urls.py

url(r'^categories/(?P<category_name>[-\w]+)/$', views.categories_pages, name='category_detail'),
url(r'^categories/(?P<category_name>[-\w]+)/(?P<speci_name>[-\w]+)$', views.categories_pages, name='specialization_detail'),

models.py

 class Category(models.Model):
    name = models.CharField(max_length=100)
    description = models.CharField(max_length=300, blank=True)
    slug = models.SlugField(default=None)

def get_absolute_url(self):
    self.slug = slugify(self.name)
    return reverse('category_detail', args=[str(self.slug)])

class Specialization(models.Model):
    id_S = models.ForeignKey(Category, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
slug = models.SlugField(default=None)

def __str__(self):
    return self.name

def get_absolute_url(self):
    self.slug = slugify(self.name)
    return reverse('spec_detail', args=[str(self.slug)])

1 个答案:

答案 0 :(得分:1)

一些事情 -

  1. 您没有在任何地方调用get_absolute_url,因此模板只会显示模型的__unicode__方法(如果是Python 2)或__str__方法(如果是Python 3)的返回值。
  2. 不要调用for spec in spec,使用单独的变量,因此没有名称空间污染和潜在错误。

    {% for each_spec in spec %} <button type="button" class="list-group-item" data-toggle="tab" href="{{ each_spec.get_absolute_url }}">{{ spec }}</button> {% endfor %}