在带有django的tab导航引导程序中使用for循环标签



我在使用for循环标签时遇到了问题,这对选项卡来说很好,但选项卡内容中对id的引用本身就是问题所在,因为我无法访问{{spec}}中的即时值,现在我如何用导航药丸选项卡自定义我的url以显示与专业化、相关的课程

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>

视图.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'),

型号.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. 您不会在任何地方调用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 %}

最新更新