当前位置: 首页 > news >正文

做网站维护挣钱吗西安企业建站机构那里有

做网站维护挣钱吗,西安企业建站机构那里有,系统总裁,wordpress有一个100的缩略图前言 本文将详细介绍如何使用Django结合MySQL数据库开发RESTful API接口。我们将从环境搭建开始#xff0c;一步步实现一个完整的接口项目。 环境准备 首先需要安装以下组件#xff1a; Python 3.8Django 4.2MySQL 8.0mysqlclientdjangorestframework 安装命令 # 创建虚…前言 本文将详细介绍如何使用Django结合MySQL数据库开发RESTful API接口。我们将从环境搭建开始一步步实现一个完整的接口项目。 环境准备 首先需要安装以下组件 Python 3.8Django 4.2MySQL 8.0mysqlclientdjangorestframework 安装命令 # 创建虚拟环境 python -m venv venv source venv/bin/activate # Windows使用 venv\Scripts\activate# 安装依赖 pip install django4.2 pip install mysqlclient pip install djangorestframework 项目创建与配置 1. 创建项目 django-admin startproject myproject cd myproject python manage.py startapp api 2. 配置settings.py INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,rest_framework, # 添加rest_frameworkapi, # 添加api应用 ]# 数据库配置 DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: django_demo,USER: root,PASSWORD: your_password,HOST: 127.0.0.1,PORT: 3306,} }# REST框架配置 REST_FRAMEWORK {DEFAULT_PAGINATION_CLASS: rest_framework.pagination.PageNumberPagination,PAGE_SIZE: 10, } 数据库模型设计 1. 创建模型api/models.py from django.db import modelsclass Book(models.Model):title models.CharField(max_length100, verbose_name书名)author models.CharField(max_length50, verbose_name作者)price models.DecimalField(max_digits5, decimal_places2, verbose_name价格)publish_date models.DateField(verbose_name出版日期)created_at models.DateTimeField(auto_now_addTrue, verbose_name创建时间)updated_at models.DateTimeField(auto_nowTrue, verbose_name更新时间)class Meta:db_table booksverbose_name 图书verbose_name_plural verbose_nameordering [-created_at]def __str__(self):return self.title 2. 生成并应用数据库迁移 python manage.py makemigrations python manage.py migrate 序列化器开发 1. 创建序列化器api/serializers.py from rest_framework import serializers from .models import Bookclass BookSerializer(serializers.ModelSerializer):class Meta:model Bookfields [id, title, author, price, publish_date, created_at, updated_at]read_only_fields [created_at, updated_at] 视图开发 1. 创建视图api/views.py from rest_framework import viewsets, filters from rest_framework.response import Response from rest_framework.decorators import action from django_filters.rest_framework import DjangoFilterBackend from .models import Book from .serializers import BookSerializerclass BookViewSet(viewsets.ModelViewSet):queryset Book.objects.all()serializer_class BookSerializerfilter_backends [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]filterset_fields [author]search_fields [title, author]ordering_fields [price, publish_date]action(detailFalse, methods[get])def get_book_stats(self, request):获取图书统计信息total_books Book.objects.count()total_authors Book.objects.values(author).distinct().count()avg_price Book.objects.aggregate(avg_pricemodels.Avg(price))return Response({total_books: total_books,total_authors: total_authors,average_price: avg_price[avg_price]}) URL配置 1. 配置项目URLsmyproject/urls.py from django.contrib import admin from django.urls import path, include from rest_framework.routers import DefaultRouter from api.views import BookViewSetrouter DefaultRouter() router.register(rbooks, BookViewSet)urlpatterns [path(admin/, admin.site.urls),path(api/, include(router.urls)), ] 中间件开发 1. 创建自定义中间件api/middleware.py import time from django.utils.deprecation import MiddlewareMixin import logginglogger logging.getLogger(__name__)class RequestLogMiddleware(MiddlewareMixin):def process_request(self, request):request.start_time time.time()def process_response(self, request, response):if hasattr(request, start_time):duration time.time() - request.start_timelogger.info(f{request.method} {request.path} - {response.status_code} - {duration:.2f}s)return response 2. 在settings.py中注册中间件 MIDDLEWARE [django.middleware.security.SecurityMiddleware,django.contrib.sessions.middleware.SessionMiddleware,django.middleware.common.CommonMiddleware,django.middleware.csrf.CsrfViewMiddleware,django.contrib.auth.middleware.AuthenticationMiddleware,django.contrib.messages.middleware.MessageMiddleware,django.middleware.clickjacking.XFrameOptionsMiddleware,api.middleware.RequestLogMiddleware, # 添加自定义中间件 ] 异常处理 1. 创建自定义异常处理api/exceptions.py from rest_framework.views import exception_handler from rest_framework.response import Response from rest_framework import statusdef custom_exception_handler(exc, context):response exception_handler(exc, context)if response is None:return Response({error: str(exc),message: 服务器内部错误}, statusstatus.HTTP_500_INTERNAL_SERVER_ERROR)return response 2. 在settings.py中配置异常处理器 REST_FRAMEWORK {EXCEPTION_HANDLER: api.exceptions.custom_exception_handler } API接口测试 1. 创建测试用例api/tests.py from rest_framework.test import APITestCase from rest_framework import status from .models import Book from datetime import dateclass BookTests(APITestCase):def setUp(self):self.book_data {title: Django实战,author: 张三,price: 59.99,publish_date: 2024-01-01}self.book Book.objects.create(**self.book_data)def test_create_book(self):测试创建图书response self.client.post(/api/books/, self.book_data, formatjson)self.assertEqual(response.status_code, status.HTTP_201_CREATED)self.assertEqual(Book.objects.count(), 2)def test_get_book_list(self):测试获取图书列表response self.client.get(/api/books/)self.assertEqual(response.status_code, status.HTTP_200_OK)self.assertEqual(len(response.data[results]), 1) API接口文档 使用drf-yasg生成Swagger文档 1. 安装drf-yasg pip install drf-yasg 2. 配置settings.py INSTALLED_APPS [...drf_yasg, ] 3. 配置URLsmyproject/urls.py from django.urls import path, include, re_path from rest_framework import permissions from drf_yasg.views import get_schema_view from drf_yasg import openapischema_view get_schema_view(openapi.Info(title图书管理API,default_versionv1,description图书管理系统API文档,terms_of_servicehttps://www.yourapp.com/terms/,contactopenapi.Contact(emailcontactyourapp.com),licenseopenapi.License(nameBSD License),),publicTrue,permission_classes(permissions.AllowAny,), )urlpatterns [...re_path(r^swagger(?Pformat\.json|\.yaml)$, schema_view.without_ui(cache_timeout0), nameschema-json),path(swagger/, schema_view.with_ui(swagger, cache_timeout0), nameschema-swagger-ui),path(redoc/, schema_view.with_ui(redoc, cache_timeout0), nameschema-redoc), ] 接口使用示例 1. 创建图书 curl -X POST http://localhost:8000/api/books/ \-H Content-Type: application/json \-d {title:Django实战,author:张三,price:59.99,publish_date:2024-01-01} 2. 获取图书列表 curl http://localhost:8000/api/books/ 3. 更新图书 curl -X PUT http://localhost:8000/api/books/1/ \-H Content-Type: application/json \-d {title:Django实战第二版,author:张三,price:69.99,publish_date:2024-01-01} 4. 删除图书 curl -X DELETE http://localhost:8000/api/books/1/ 性能优化建议 使用数据库索引 class Book(models.Model):...class Meta:indexes [models.Index(fields[title]),models.Index(fields[author]),] 使用缓存 from django.core.cache import cacheclass BookViewSet(viewsets.ModelViewSet):def list(self, request):cache_key book_listcached_data cache.get(cache_key)if cached_data is None:queryset self.filter_queryset(self.get_queryset())serializer self.get_serializer(queryset, manyTrue)cached_data serializer.datacache.set(cache_key, cached_data, timeout300) # 缓存5分钟return Response(cached_data) 总结 本文详细介绍了使用Django开发RESTful API的完整流程包括 环境搭建和项目配置数据库模型设计序列化器开发视图和URL配置中间件和异常处理测试用例编写API文档生成性能优化建议 通过按照本教程的步骤你可以快速搭建一个功能完善的Django API项目。建议在实际开发中根据具体需求进行适当调整和扩展。
http://www.hkea.cn/news/14264807/

相关文章:

  • 网站搜索引擎怎样做什么软件可以做图片设计
  • 楼盘网站模板wordpress 文章阅读数
  • 大竹县国示建设专题网站小程序开发问题
  • 西安地区专业做网站公司北京公交yy优化
  • 广州手机端网站制作wordpress 怎么重新安装
  • 公司网站模版 dedecms营销网站建设内容
  • 工作时做网站使用软件怎么做自助购物网站
  • 专业做民宿的网站网深圳网站优化
  • 北理工网站开发与应用答案哈尔滨建筑专业网站
  • 做app模板网站东莞保安公司有多少家
  • 网站平台开发公司网站建设下一步打算
  • 个人网站 前置审批电脑网页怎么下载视频
  • 做网站app要多少钱北京网站建设团队
  • 千里马招标网站河北建设工程信息网辅助评标系统
  • 网站设计的内容温州建网站哪家好
  • 最新网站备案教程怎么建设影视卡网站
  • 姜堰网站制作建筑设计软件公司
  • 如何做网站哪个站推广济宁网站建设 帮站
  • 南宁网站怎么制作公司做使用的网站有哪些
  • 团购网站APP怎么做百度网站如何做运营
  • 网站模板 安装淘宝客必须做网站
  • 网站备案号被收回做venn的网站
  • 宝安做棋牌网站建设有哪些公司涿州网站网站建设
  • 常州平台网站建设免费观看行情软件网站下载
  • 手机网站主页东城区网站建设公司
  • 南京明辉建设有限公司网站网站制作怎么学去哪学
  • 域名和网站名不一样企业网站怎么搭建
  • 厦门市建设局与管理局网站自己做网站系统首选平台
  • 学网站建设需要几年上海货拉拉注册公司地址
  • 博罗做网站报价对网站建设的评价语