Django 自动生成带搜索功能的列表视图(类似后台管理界面)

您所在的位置:网站首页 名单如何自动生成表格内容显示 Django 自动生成带搜索功能的列表视图(类似后台管理界面)

Django 自动生成带搜索功能的列表视图(类似后台管理界面)

2024-07-16 03:05| 来源: 网络整理| 查看: 265

Django 自动生成带搜索功能的列表视图(类似后台管理界面)

在本文中,我们将介绍如何使用 Django 快速生成带有搜索功能的列表视图,类似于 Django 后台管理界面。

阅读更多:Django 教程

准备工作

在开始之前,确保已经安装好 Django,并且已经创建了一个 Django 项目。

创建模型

首先,我们需要创建一个模型,以便在列表视图中显示数据和进行搜索。假设我们要创建一个简单的博客应用,包含文章和分类两个模型。打开项目中的 models.py 文件,添加以下代码:

from django.db import models class Category(models.Model): name = models.CharField(max_length=100) def __str__(self): return self.name class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() category = models.ForeignKey(Category, on_delete=models.CASCADE) def __str__(self): return self.title 生成列表视图

接下来,我们将使用 Django 的类视图来生成列表视图。打开项目中的 views.py 文件,添加以下代码:

from django.views import generic from .models import Article class ArticleListView(generic.ListView): model = Article template_name = 'article_list.html' context_object_name = 'articles' paginate_by = 10

在上述代码中,我们创建了一个名为 ArticleListView 的类,继承自 Django 的泛型视图 ListView。我们设置了该视图要使用的模型、模板和上下文对象名称。此外,我们还设置了每页显示的项目数量为 10。

创建模板

下一步,我们需要创建用于显示列表视图的模板。在项目的根目录下创建一个名为 templates 的文件夹,并在该文件夹下创建一个名为 article_list.html 的文件。在 article_list.html 文件中添加以下代码:

{% extends 'base.html' %} {% block content %} 文章列表 标题 内容 分类 {% for article in articles %} {{ article.title }} {{ article.content }} {{ article.category }} {% endfor %} {% endblock %}

在上述代码中,我们创建了一个简单的表格来显示文章列表。通过使用 Django 模板语言中的循环语句,我们可以根据数据库中的数据动态生成表格内容。

添加搜索功能

现在,我们将向列表视图中添加搜索功能。在项目的根目录下创建一个名为 forms.py 的文件,并添加以下代码:

from django import forms class ArticleSearchForm(forms.Form): search = forms.CharField(required=False)

在上述代码中,我们创建了一个名为 ArticleSearchForm 的表单类,其中包含一个名为 search 的字段,用于接收用户输入的搜索关键字。

接下来,我们需要对 ArticleListView 进行一些修改。打开 views.py 文件,并添加以下代码:

from .forms import ArticleSearchForm class ArticleListView(generic.ListView): model = Article template_name = 'article_list.html' context_object_name = 'articles' paginate_by = 10 def get_queryset(self): queryset = super().get_queryset() form = ArticleSearchForm(self.request.GET) if form.is_valid() and form.cleaned_data['search']: queryset = queryset.filter(title__icontains=form.cleaned_data['search']) return queryset def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) form = ArticleSearchForm(self.request.GET) context['form'] = form return context

在上述代码中,我们重写了 ArticleListView 的两个方法:get_queryset 和 get_context_data。在 get_queryset 方法中,我们根据用户输入的搜索关键字来过滤查询结果,并将过滤后的数据返回。在 get_context_data 方法中,我们将搜索表单对象传递给模板,以便在模板中显示搜索输入框。

最后,我们需要对模板进行一些修改,以支持搜索功能。在 article_list.html 文件中添加以下代码:

{{ form.as_p }} 搜索

在上述代码中,我们使用 Django 模板语言中的表单渲染函数 as_p 来生成搜索表单的 HTML 代码。

运行应用

至此,我们已经完成了列表视图的创建和搜索功能的添加。运行 Django 项目,并在浏览器中访问 http://localhost:8000/articles,即可看到生成的列表视图和搜索表单。

总结

通过本文的介绍,我们学习了如何使用 Django 自动生成带有搜索功能的列表视图,类似于 Django 后台管理界面。我们首先创建了模型以及相应的数据库表,然后生成了列表视图,并在模板中展示了数据。接着,我们使用了 Django 的表单类来创建搜索表单,并在列表视图中根据用户的搜索关键字来过滤查询结果。最后,我们展示了整个应用的运行效果。希望本文对你在使用 Django 开发应用时有所帮助。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3