我在django-tables2网站上学习教程(https://django-tables2.readthedocs.io/en/latest/pages/tutorial.html)并且我无法使用引导程序样式来显示我的表。我遵循了确切的教程,并成功地获得了引导样式的表,然而,当在我的主项目中实现时,它在没有引导的情况下保持了基本格式。
这是我的html,包括表:
{% extends 'base.html' %}
{% block title %}Home{% endblock %}
{% block extra_head %}
<link rel="stylesheet" type="text/css" href="/adminEdits/tatic/mainStyles.css" />
<script type="text/javascript" src="/static/scripts.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
{% endblock %}
{% block content %}
{% if user.is_authenticated %}
{% load render_table from django_tables2 %}
<h1>Edit Drivers</h1>
{% render_table table %}
{% else %}
<p>You are not logged in</p>
<a href="{% url 'login' %}">login</a>
{% endif %}
{% endblock %}
还有我的桌子.py
import django_tables2 as tables
from tickets.models import User
class UsersTable(tables.Table):
class Meta:
model = User
template_name = "django_tables2/bootstrap.html"
fields = ("user_id",)#"first_name", "last_name", "position", "admin_level", "email", "distribution_company_id")
我的观点.py
from django_tables2 import SingleTableView
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, Http404
from django.views.generic import ListView
from tickets.models import User
from .tables import UsersTable
# Create your views here.
def index(request):
return render(request, 'adminEdits/index.html', context)
class UsersListView(SingleTableView):
model = User
table_class = UsersTable
template_name = 'adminEdits/editDrivers.html'
我的urls.py应用程序:
from django.urls import path
from adminEdits.views import UsersListView
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('drivers', UsersListView.as_view()),
]
如果我编辑我的html页面并删除正在扩展的基本html,那么引导程序样式就可以正常工作。
我能够通过解决这个问题
- 运行
collectstatic
(oops( - 将
DJANGO_TABLES2_TEMPLATE = "django_tables2/bootstrap4.html"
添加到我的基本设置.py(当然,这可以在几个地方指定( - 将
attrs
添加到tables.py
类中。有趣的是,我从来没能让苍白的班级开始上课
class PersonTable(tables.Table):
class Meta:
model = Person
attrs = {"class": "table thead-light table-striped table-hover"}
fields = (...)
我能够解决这个问题,方法是从扩展base.html文件改为将基本html代码放入一个单独的文件中,我可以使用{%include-header.html%}直接放入该文件中。这让我可以放置
{% load render_table from django_tables2 %}
在页面顶部,并且能够强制它加载到html中的第一个东西,同时仍然能够在.中包括其他文件
为了使base.html文件在扩展时正常工作,我所要做的就是将引导样式表链接添加到base.html。有了这个链接,一切都可以正常工作,而无需在中导入其他文件。