下面是详细讲解“Django2.1.7查询数据返回json格式的实现”的完整攻略。
前提条件
在实现查询数据返回 json 格式的过程中,你需要先掌握以下技术:
- Django 2.1.7 开发框架
- 数据库查询语句和操作,如 SQL、Django ORM 等
- Python 语言基础,如变量、函数、列表、字典等
实现过程
- 定义视图函数
首先要完成的是视图函数的编写,视图函数是对接收请求并返回响应的实现逻辑。在 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 的参数传入,并作为函数返回值,就可以将查询结果响应到前端。
- 添加 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技术站