下面我将详细讲解使用Django开发简单接口实现文章增删改查的完整攻略。
简介
Django是一个基于MVC架构的Web开发框架,提供了一整套用于快速开发高质量Web应用程序所需的组件和工具。在Django中,我们可以使用ORM(Object Relational Mapping)来操作数据库,从而方便地对数据库进行增删改查操作。
开发环境要求
- Python3
- Django
创建Django项目
首先,我们需要创建一个Django项目。在终端中输入以下命令:
django-admin startproject demo_project
创建Django应用
在创建完Django项目后,我们需要创建一个Django应用。在终端中输入以下命令:
cd demo_project
python3 manage.py startapp article
数据库模型设计
在进行数据的操作前,我们需要先设计好数据库模型。在article应用的models.py文件中,创建Article模型,代码如下:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=50)
content = models.TextField()
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
其中,Article模型中包含文章的标题(title)、内容(content)、创建时间(created)、更新时间(updated)四个字段。
接口实现
获取文章列表
获取文章列表,我们需要创建一个API接口。在article应用的views.py文件中,添加以下代码:
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import Article
@api_view(["GET"])
def article_list(request):
articles = Article.objects.all()
data = [{"id": article.id, "title": article.title} for article in articles]
return Response(data)
该接口返回文章的id和title。
获取单个文章详情
获取单个文章详情需要传递文章id。在article应用的views.py文件中,添加以下代码:
@api_view(["GET"])
def article_detail(request, pk):
try:
article = Article.objects.get(pk=pk)
data = {"id": article.id, "title": article.title, "content": article.content}
return Response(data)
except Article.DoesNotExist:
return Response(status=404)
该接口返回文章的id、title和content。
创建文章
在article应用的views.py文件中,添加以下代码:
@api_view(["POST"])
def article_create(request):
title = request.data.get("title")
content = request.data.get("content")
article = Article.objects.create(title=title, content=content)
data = {"id": article.id, "title": article.title, "content": article.content}
return Response(data)
该接口根据传递过来的title和content创建文章,并返回文章的id、title和content。
更新文章
在article应用的views.py文件中,添加以下代码:
@api_view(["PUT"])
def article_update(request, pk):
try:
article = Article.objects.get(pk=pk)
title = request.data.get("title")
content = request.data.get("content")
article.title = title
article.content = content
article.save()
data = {"id": article.id, "title": article.title, "content": article.content}
return Response(data)
except Article.DoesNotExist:
return Response(status=404)
该接口根据传递过来的id,更新文章的title和content,并返回文章最新的id、title和content。
删除文章
在article应用的views.py文件中,添加以下代码:
@api_view(["DELETE"])
def article_delete(request, pk):
try:
article = Article.objects.get(pk=pk)
article.delete()
return Response(status=204)
except Article.DoesNotExist:
return Response(status=404)
根据传递过来的id,删除对应的文章,并返回204。
配置URL
在demo_project下的urls.py文件中,添加以下代码:
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from article.views import article_list, article_detail, article_create, article_update, article_delete
router = DefaultRouter()
urlpatterns = router.urls
urlpatterns += [
path('article/', article_list),
path('article/<int:pk>/', article_detail),
path('article/new/', article_create),
path('article/<int:pk>/edit/', article_update),
path('article/<int:pk>/delete/', article_delete),
]
测试接口
在终端中输入以下命令启动服务器:
python3 manage.py runserver
然后使用Postman等工具,分别调用文章的增删改查接口,观察数据库数据是否发生变化。
示例说明一
例如,我们要添加一篇新文章,我们可以执行以下命令:
curl -X POST \
http://localhost:8000/article/new/ \
-H 'content-type: application/json' \
-d '{
"title": "New Article",
"content": "New Article Content"
}'
执行完该命令后,数据库中应该会新增一条数据。
示例说明二
例如,我们要获取文章列表,我们可以执行以下命令:
curl -X GET \
http://localhost:8000/article/ \
-H 'content-type: application/json'
执行完该命令后,应该会返回所有文章的id和title。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Django开发简单接口实现文章增删改查 - Python技术站