Django2.1.7 查询数据返回json格式的实现

下面是详细讲解“Django2.1.7查询数据返回json格式的实现”的完整攻略。

前提条件

在实现查询数据返回 json 格式的过程中,你需要先掌握以下技术:

  • Django 2.1.7 开发框架
  • 数据库查询语句和操作,如 SQL、Django ORM 等
  • Python 语言基础,如变量、函数、列表、字典等

实现过程

  1. 定义视图函数

首先要完成的是视图函数的编写,视图函数是对接收请求并返回响应的实现逻辑。在 Django 中定义视图函数通常需要在 views.py 文件中新建一个函数,并采用特定的装饰器将其注册为 URL。

在视图函数中,根据具体实现需求引入 Django 中的 QuerySet 对象进行查询操作,并将查询结果转换成 json 格式,最后将 json 数据作为响应返回给前端。

# views.py
from django.http import JsonResponse
from .models import Article

def article_list(request):
    articles = Article.objects.all()
    data = []
    for article in articles:
        data.append({
            'title': article.title,
            'content': article.content,
            'pub_date': article.pub_date.strftime('%Y-%m-%d %H:%M:%S')
        })
    return JsonResponse({'data': data})

以上示例中,我们定义了一个 article_list 视图函数,该函数中首先使用 Article.objects.all() 查询出所有 Article 对象,然后将每个 Article 对象转换成字典,最后将所有字典放到一个列表中,再将列表作为值赋给 data 字典的 data 键。

最后,将 data 字典作为 JsonResponse 的参数传入,并作为函数返回值,就可以将查询结果响应到前端。

  1. 添加 URL 映射

视图函数定义完毕后,还需要在 Django 中添加 URL 映射,将请求的 URL 和视图函数对应起来。在通常情况下,URL 映射可以在应用的 urls.py 文件中进行设置。当然也可以在项目的 urls.py 中配置全局的 URL 映射。

# urls.py
from django.urls import path
from .views import article_list

urlpatterns = [
    path('articles/', article_list, name='article_list'),
]

以上示例中,我们将路径 /articles/ 映射到了 article_list 视图函数上。

示例说明

示例一:查询某个分类下的所有文章

def category_article_list(request, category_id):
    articles = Article.objects.filter(category_id=category_id)
    data = []
    for article in articles:
        data.append({
            'title': article.title,
            'url': article.get_absolute_url(),
            'author': article.author.username
        })
    return JsonResponse({'data': data})

以上示例中,我们在函数定义时,添加了一个 category_id 参数,表示指定的文章分类 ID。在函数中通过 filter 方法筛选出满足特定条件的 Article 对象。

同样,我们将查询结果转换成字典格式并放到 data 列表中,最终返回 json 格式响应数据。

示例二:查询某个作者发布的所有文章

def author_article_list(request, author_id):
    articles = Article.objects.filter(author_id=author_id)
    data = []
    for article in articles:
        data.append({
            'title': article.title,
            'pub_date': article.pub_date.strftime('%Y-%m-%d %H:%M:%S'),
            'category': article.category.name
        })
    return JsonResponse({'data': data})

以上示例中,我们新增了一个 author_id 参数表示作者 ID,这里使用 filter 方法满足 author_id 的条件筛选出对应的 Article 对象。

该示例中我们将文章的标题、发布日期和所属分类转换成字典格式,并加入到 data 列表中。最后返回 json 格式响应数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django2.1.7 查询数据返回json格式的实现 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Python 速成课程,第 2 版。侧身射手。外星人继续向下移动,直到顶行撞到底部

    【问题标题】:Python Crash Course, 2nd edition. Sideways shooter. Aliens keep moving down until the top row hits the bottomPython 速成课程,第 2 版。侧身射手。外星人继续向下移动,直到顶行撞到底部 【发布时间】:2023-04-03 09:4…

    Python开发 2023年4月8日
    00
  • PyCharm调用matplotlib绘图时图像弹出问题详解

    接下来我将详细讲解如何解决“PyCharm调用matplotlib绘图时图像弹出问题”的完整攻略。 问题描述 在PyCharm中运行matplotlib绘图时,通常会出现图像弹出的问题,即图像无法嵌入到PyCharm的界面中,而是另外弹出一个窗口显示图像。 解决方法 方法一:添加设置 在PyCharm中添加以下设置: import matplotlib ma…

    python 2023年5月18日
    00
  • python自动提取文本中的时间(包含中文日期)

    下面我会详细讲解如何使用Python自动提取文本中的时间,其中也会包含中文日期的处理办法。 如何自动提取文本中的时间 使用Python自动化提取文本中的时间可以分成以下几个步骤: 将文本中出现的时间字符串通过正则表达式或第三方库进行提取。 将提取出的时间字符串进行解析和格式化,得到标准的时间格式数据。 对于中文日期需要进行额外的处理,例如将“两天前”、“昨天…

    python 2023年6月2日
    00
  • 如何从 gensim 打印 LDA 主题模型? Python

    【问题标题】:How to print the LDA topics models from gensim? Python如何从 gensim 打印 LDA 主题模型? Python 【发布时间】:2023-04-06 01:05:02 【问题描述】: 使用gensim,我能够从 LSA 中的一组文档中提取主题,但是如何访问从 LDA 模型生成的主题? 打印…

    Python开发 2023年4月6日
    00
  • Python复制文件操作实例详解

    Python复制文件操作实例详解 操作场景 在Python编程中,我们时常需要读写文件,而有时候需要将文件复制到另一个位置或者重命名。在这里,我们将介绍如何在Python中实现复制文件的操作。 使用shutil模块实现文件复制 Python中有一个标准的库shutil,它提供了许多用于文件操作的高级函数。在这里,我们将使用shutil模块中的copyfile…

    python 2023年6月5日
    00
  • 在Python中使用cookielib和urllib2配合PyQuery抓取网页信息

    在Python中,我们可以使用cookielib和urllib2库来抓取网页信息,并使用PyQuery库来解析网页内容。本攻略将介绍如何使用这些库来抓取网页信息。 1. 安装Python库 我们需要安装Python的cookielib、urllib2和PyQuery库。可以使用以下命令进行安装: pip install cookielib pip insta…

    python 2023年5月15日
    00
  • Python 列表(List) 的三种遍历方法实例 详解

    Python中的列表(List)是一种常用的数据类型,可以存储多个元素。本文将详细讲解Python中列表的三种遍历方法,包括for循环遍历、while循环遍历和列表推导式,并提供两个实例说明。 for循环遍历 使用for循环遍历列表是常见的方法。可以使用in关键字来遍历列表中的每个元素。例如: my_list = [1, 2, 3, 4, 5] for el…

    python 2023年5月13日
    00
  • 基于Python socket实现简易网络聊天室

    下面是基于Python socket实现简易网络聊天室的完整攻略。 步骤一:实现基本的客户端和服务端 首先我们需要实现简单的客户端和服务端,可以让客户端发送消息给服务端,并让服务端把消息广播给所有的客户端。 客户端 import socket import threading IP = ‘127.0.0.1’ PORT = 1234 def send_mes…

    python 2023年6月6日
    00
合作推广
合作推广
分享本页
返回顶部