作为不擅长前端的Django初学者,如何能够美观展示HTML table是一个头疼的事。
虽然django很容易实现查询表格并展示,但是简陋的table显得很不专业。
django-tables2 是一个创建HTML tables的app,简化了对样式等技术的开发要求。
本文是官方手册的摘要,原文非常简练,以快速完成项目工作为目标。
Copy pip install django-tables2
在app中使用django-tables2
创建Django app (这里命名是tutorial
)
Copy python manage.py startapp tutorial
在项目的settings.py
的INSTALLED_APPS
中添加django_tables2
和turorial
在tutorial/models.py
中添加model
Copy # tutorial/models.py
class Person ( models . Model ):
name = models . CharField (max_length = 100 , verbose_name = 'full name' )
Copy python manage.py makemigrations tutorial
python manage.py migrate tutorial
Copy $ python manage.py shell
>>> from tutorial.models import Person
>>> Person.objects.bulk_create([Person(name='Jieter'), Person(name='Bradley')])
[<Person: Person object>, <Person: Person object>]
Copy # tutorial/views.py
from django . shortcuts import render
from . models import Person
def people ( request ):
return render (request, 'tutorial/people.html' , { 'people' : Person.objects. all ()})
Copy {# tutorial/templates/tutorial/people.html #}
{% load render_table from django_tables2 %}
<!doctype html>
<html>
<head>
<title>List of persons</title>
</head>
<body>
{% render_table people %}
</body>
</html>
以上完成后可以看到一个简单的页面 http://localhost:8000/people/
下面将开始真正的Table定制
为了能够定义一个定制的查询页面,首先定义一个Table
类:
Copy # tutorial/tables.py
import django_tables2 as tables
from . models import Person
class PersonTable ( tables . Table ):
class Meta :
model = Person
template = 'django_tables2/bootstrap.html'
Copy # tutorial/views.py
from django . shortcuts import render
from django_tables2 import RequestConfig
from . models import Person
from . tables import PersonTable
def people ( request ):
table = PersonTable (Person.objects. all ())
RequestConfig (request). configure (table)
return render (request, 'people.html' , { 'table' : table})
使用RequestConfig
自动从reuqest.GET
取出值并相应过更新表格。这样数据就会整齐和页面化。
然后将查询集(queryset
)传递给render_table
而不是传递给table instance:
Copy {# tutorial/templates/tutorial/people.html #}
{% load render_table from django_tables2 %}
<!doctype html>
<html>
<head>
<title>List of persons</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
</head>
<body>
{% render_table table %}
</body>
</html>
现在就可以看到一个bootstrap3 stylesheet的表单了:
参考