django如何构建一个api

前端通过ajax向后端的url请求数据,那么当我们访问一个后端的url的时候,需要返回一些数据,这一篇笔记就是记录,访问后端url的时候,如何返回数据。

进入到我们之前的设置好的apps目录下,用manage.py创建一个名为home的子应用:

python ../../manage.py startapp home

需要在setting/dev.py中的INSTALLED_APPS里申明我们这个子应用,直接在列表里加’home’.

编写新建出来的子应用的models.py,代码如下,就相当于在数据库中创建一个表,表的每个字段就是模型中的成员变量,设置字段的类型、长度、注释等。

from tabnanny import verbose
from django.db import models

class Banner(models.Model):
    """轮播图模型"""

    title = models.CharField(max_length=500, verbose_name="广告标题")
    ling = models.CharField(max_length=500, verbose_name="广告链接")
    iamge_url = models.CharField(max_length=255, verbose_name="图片")
    remark = models.TextField(verbose_name="备注信息")
    is_show = models.BooleanField(default=False,verbose_name="是否显示")
    orders = models.IntegerField(default=1, verbose_name="排序")
    is_delete = models.BooleanField(default=False, verbose_name="是否删除")

    class Meta:
        db_table = "ly_banner"
        verbose_name = "轮播广告"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name

有了上述的代码,我们还要执行下面的两个步骤才能将上面的表应用到我们的数据库中:


python manage.py makemigrations

python manage.py migrate

使用ListAPIView构建视图,views.py

from django.shortcuts import render

from rest_framework.generics import ListAPIView
from .models import Banner
from .serializers import BannerModelSerializer
from luffyapi.settings import constants
class BannerListAPIView(ListAPIView):
    queryset = Banner.objects.filter(is_show=True, is_deleted=False).order_by("-orders","-id")[:constants.BANNER_LENGTH]
    serializer_class = BannerModelSerializer

由于视图中要使用序列化器,所以要新建一个序列化器文件,serializers.py:

from rest_framework import serializers
from .models import Banner
class BannerModelSerializer(serializers.ModelSerializer):
    """轮播广告的序列化器"""

    class Meta:
        model = Banner
        fields = ["image_url","link"]

先在子应用中配置路由,urls.py:

from django.urls import path,re_path
from . import views
urlpatterns = [
    path("banner/",views.BannerListAPIView.as_view()),
]

然后要把子应用的路由告诉我们的主应用,所以要到总路由urls.py中注册路由:

from django.contrib import admin
from django.urls import path,re_path,include
from django.conf import settings
from django.views.static import serve

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'media/(?P.*)', serve, {"document_root": settings.MEDIA_ROOT}),
    path('home/', include("home.urls") ),
]

自此,我们便可以访问http://api.luffycity.cn:8000/banner/

  • Django的视图(view)是处理业务逻辑的核心,它负责处理用户的请求并返回响应数据。Django提供了两种编写视图的方式:基于函数的视图和基于类的视图
  • Django的视图(views.py)通常和URL路由(URLconf)一起工作的。服务器在收到用户通过浏览器发来的请求后,会根据用户请求的url地址和urls.py里配置的url-视图映射关系,去执行相应视图函数或视图类,从而返回给客户端响应数据
  • 每个视图函数的第一个默认参数都必需是request, 它是一个全局变量。Django把每个用户请求封装成了request对象,它包含里当前请求的所有信息,比如请求路径request.path, 当前用户request.user以及用户通过POST提交的数据request.POST
  • 人话: *视图用来处理用户的请求

django-rest-framework是django的一个第三方拓展库,他使在django上开发RESTful风格的api接口变的更加轻松和快捷。

Original: https://blog.csdn.net/weixin_42065178/article/details/124185594
Author: Wanncye
Title: django如何构建一个api

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/734734/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球