django-rest-swagger显示接口备注内容

本文详细介绍如何在Django REST框架中集成Swagger,实现API文档的自动生成。通过安装django-rest-swagger包,配置settings.py,注释views.py中的方法,并设置urls.py,最终在浏览器中访问指定URL即可查看详细的API文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Swagger是一個API開發者的工具框架,用於生成、描述、調用和可視化RESTful風格的Web服務。總體目標是使客戶端和文件系統服務器以同樣的速度來更新,方法,參數和模型緊密集成到服務器端的代碼中,允許API始終保持同步。

在使用 django-rest-framework 進行API開發,可以使用django-rest-swagger接入swagger自動生成接口文檔。

1. 安裝django-rest-swagger

pip install django-rest-swagger

2.配置settings.py

INSTALLED_APPS = [
    ...

    ‘rest_framework_swagger‘

    ...
]


REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
    ),
    'DEFAULT_SCHEMA_CLASS':
        'rest_framework.schemas.AutoSchema',
    'DEFAULT_PARSER_CLASSES': [
    'rest_framework.parsers.FormParser',
    'rest_framework.parsers.MultiPartParser',
    'rest_framework.parsers.JSONParser',]
}

3. views.py

該博文的項目是django-rest-framework中文站點的例子:https://q1mi.github.io/Django-REST-framework-documentation

當需要對接口的各種方法進行註釋時,直接在該類下添加註釋,如下所示。需要註意是的:註釋的方法名稱(如 get、post)要對應該類所含的方法名稱

class SnippetList(generics.ListCreateAPIView):
    """
    get:
        Return all snippets.
    post:
        Create a new snippet instance.
    """

    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)

    def perform_create(self, serializer):
        serializer.save(owner=self.request.user)


class SnippetDetail(generics.RetrieveUpdateDestroyAPIView):
    """
    get:
        Return a snippet instance.
    put:
        Update a snippet instance.
    patch:
        Update a snippet instance.
    delete:
        Delete a snippet instance.
    """
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer
    permission_classes = (permissions.IsAuthenticatedOrReadOnly, IsOwnerOrReadOnly,)


class UserList(generics.ListAPIView):
    """
    get:
        Return all users
    """
    queryset = MyUser.objects.all()
    serializer_class = UserSerializer


class UserDetail(generics.RetrieveAPIView):
    """
    get:
        Return a user instance
    """
    queryset = MyUser.objects.all()
    serializer_class = UserSerializer


class SnippetHighlight(generics.GenericAPIView):
    """
    get:
        Return a highlight instance
    """
    queryset = Snippet.objects.all()
    renderer_classes = (renderers.StaticHTMLRenderer,)

    def get(self, request, *args, **kwargs):
        snippet = self.get_object()
        return Response(snippet.highlighted)


在使用ModelViewSet时,用get/post/patch/会存在问题

所以需要看其django-restful源码,找到方法名:

class QR_result_table_ViewSet(viewsets.ModelViewSet):
    """
    retrieve: 
        Update a snippet instance.
    update:
        Update a snippet instance.
    partial_update:
        partial_update a snippet instance.
    destroy:
        Delete a snippet instance.
    """
    queryset = QR_result_table.objects.all()
    serializer_class = QR_result_table_Serializer
    pagination_class = ListPagination
    filter_backends = (filters.DjangoFilterBackend,)
    filter_class = QR_result_table_Filter

 

3.配置urls.py

from rest_framework.schemas import get_schema_view
from rest_framework_swagger.renderers import SwaggerUIRenderer, OpenAPICodec
schema_view = get_schema_view(title=‘API‘, renderer_classes=[SwaggerUIRenderer, OpenAPICodec])

urlpatterns = [
    
    ...

    url(r‘docs/‘, schema_view, name=‘docs‘)

    ...
]

 

運行manage.py後,瀏覽器訪問 http://127.0.0.1:8000/,可以看到以下內容:

技術分享圖片

訪問 http://127.0.0.1:8000/docs/,可以看到接口文檔如下:

技術分享圖片

 

點擊打開snippets,可以看到如下,每個方法後面都有你在views.py中添加的註釋

 

點擊打開get方法,如下

技術分享圖片

 

<think>嗯,用户想用Python做一个任务跟进表,需要包含项目序号、名称、内容、开始时间、预计完成时间、负责人、备注,还要有完成度的监控界面,用户系统,任务到期未完成的消息提示,以及权限管理,包括开发者和管理员权限。首先,我需要确定用户的技术背景,可能对Python有一定的了解,但可能不熟悉Web开发框架。所以,我应该推荐比较常用的框架,比如Django,因为它自带Admin后台和用户权限系统,可能更适合这个需求。 接下来,用户需要任务跟进表的基本功能。Django的模型(Models)可以很好地处理数据库结构,比如创建Task模型,包含所有需要的字段。可能需要添加一个完成度字段,比如百分比或者状态选项。然后,监控界面可能需要使用可视化库,比如ECharts或者Matplotlib,但考虑到Web集成,ECharts可能更合适,因为可以通过JavaScript在前端渲染,而Django后端提供数据接口。 用户系统方面,Django内置了用户认证系统,可以在此基础上扩展,添加用户角色,比如开发者和管理员。开发者权限最大,可能需要自定义权限,或者通过Django的admin界面来管理。管理员权限次之,可以管理项目和任务分配,而普通用户可能只能查看或编辑自己负责的任务。 消息提示功能需要考虑如何检测任务到期情况。可以使用Celery定时任务,定期检查数据库中的任务,如果预计完成时间快到了或者已过,且未完成,就触发通知。通知可以通过邮件、站内消息或者两者结合。需要配置SMTP服务器,或者集成第三方邮件服务。 权限管理部分,Django的权限系统可以通过Groups和Permissions来设置,或者创建自定义的用户模型,添加角色字段。开发者可能有所有权限,管理员有部分管理权限,普通用户权限受限。前端页面需要根据用户角色显示不同的内容,比如只有开发者能看到所有任务,管理员能分配任务,普通用户只能看到自己的任务。 技术选型方面,前端可能用Bootstrap快速搭建界面,后端用Django REST Framework如果前后端分离,或者直接使用Django模板渲染。不过考虑到用户可能想快速开发,Django模板可能更简单,结合一些AJAX请求来动态加载数据。 数据库方面,Django默认使用SQLite,适合小型项目,但如果需要扩展,可以换成PostgreSQL或MySQL。不过初期用SQLite应该足够。 部署方面,可能需要考虑如何部署到服务器,比如使用Nginx和Gunicorn,或者云服务如Heroku、PythonAnywhere。但用户可能还没到这一步,暂时先实现本地开发。 可能遇到的难点包括定时任务的实现,需要Celery和Redis或RabbitMQ作为消息代理,这可能增加复杂度。如果用户想简化,可以考虑使用Django的cron插件,比如django-crontab,但不如Celery灵活。 另外,消息提示需要用户有注册邮箱,或者在系统中提供通知中心。站内消息可以通过数据库存储,用户登录时显示未读通知。 监控界面可能需要汇总任务数据,比如按完成度统计,按负责人统计,用图表展示。ECharts需要前端集成,Django后端提供JSON数据API。 权限控制需要在每个视图中检查用户权限,或者使用装饰器如@login_required和@permission_required。自定义的权限可能需要重写模型Meta类中的权限。 测试方面,需要确保不同角色的用户只能访问授权的部分,防止越权操作。同时,任务到期提醒的逻辑要准确,考虑时区问题,确保时间比较正确。 最后,可能需要提供导入导出功能,比如导出Excel报表,方便汇报。Django有插件如django-import-export可以简化这个功能。 总结下来,步骤大致是:搭建Django项目,设计数据模型,设置用户权限,实现任务管理功能,添加消息提醒,创建监控界面,测试权限控制和提醒功能,最后部署。可能需要分阶段开发,先完成核心功能,再逐步添加其他特性。</think>以下是使用Python开发任务跟进表系统的分步实施方案: 一、技术选型建议 1. 框架选择:Django(内置用户系统+权限管理+ORM) 2. 数据库:SQLite(开发环境)/MySQL(生产环境) 3. 前端界面:Bootstrap + ECharts 4. 消息通知:Celery(定时任务) + smtplib(邮件通知) 5. 权限控制:Django-guardian(细粒度权限管理) 二、系统架构设计 ``` [系统组成] ├── 用户认证模块 ├── 项目管理模块 ├── 权限控制模块 ├── 消息通知模块 └── 监控看板模块 ``` 三、数据库设计(models.py示例) ```python from django.db import models from django.contrib.auth.models import User class Project(models.Model): PROJECT_STATUS = ( (0, '未开始'), (1, '进行中'), (2, '已延期'), (3, '已完成') ) serial_number = models.CharField(max_length=20, unique=True) name = models.CharField(max_length=100) content = models.TextField() start_date = models.DateField() due_date = models.DateField() manager = models.ForeignKey(User, on_delete=models.CASCADE) progress = models.IntegerField(default=0) status = models.IntegerField(choices=PROJECT_STATUS, default=0) remarks = models.TextField(blank=True) created_at = models.DateTimeField(auto_now_add=True) ``` 四、权限配置方案 1. 角色划分: - 开发者:所有权限 - 管理员:项目增删改查、任务分配 - 普通用户:查看分配项目、更新进度 2. 权限配置代码示例: ```python # settings.py CUSTOM_GROUPS = { 'developer': { 'permissions': [ 'add_project', 'change_project', 'delete_project', 'view_project', 'assign_task' ] }, 'admin': { 'permissions': [ 'add_project', 'change_project', 'view_project', 'assign_task' ] } } # 初始化脚本 from django.core.management.base import BaseCommand from django.contrib.auth.models import Group, Permission class Command(BaseCommand): def handle(self, *args, **kwargs): for group_name, config in CUSTOM_GROUPS.items(): group, _ = Group.objects.get_or_create(name=group_name) for perm in config['permissions']: permission = Permission.objects.get(codename=perm) group.permissions.add(permission) ``` 五、消息通知实现 1. 定时任务配置(celery.py): ```python from celery import Celery from django.utils import timezone app = Celery('project_tracker') app.config_from_object('django.conf:settings', namespace='CELERY') @app.task def check_project_deadlines(): from .models import Project overdue = Project.objects.filter( due_date__lt=timezone.now().date(), status__in=[0, 1] ) for project in overdue: send_notification.delay( user_id=project.manager.id, message=f"项目 {project.name} 已逾期!" ) @app.task def send_notification(user_id, message): # 实现邮件/站内信通知逻辑 pass ``` 六、监控看板实现 1. 使用ECharts生成可视化图表(示例数据接口): ```python # views.py from django.http import JsonResponse def project_dashboard(request): data = { 'progress': Project.objects.values_list('progress', flat=True), 'status_distribution': Project.objects.count_by_status(), 'overdue_projects': Project.overdue.count() } return JsonResponse(data) ``` 七、系统部署建议 1. 开发环境:python manage.py runserver 2. 生产环境部署: - Web服务器:Nginx + Gunicorn - 消息队列:Redis(Celery后端) - 定时任务:Celery Beat - 邮件服务:配置SMTP参数 开发步骤: 1. 创建Django项目:django-admin startproject project_tracker 2. 创建应用:python manage.py startapp projects 3. 配置数据库和模型 4. 实现用户认证和权限控制 5. 开发CRUD界面 6. 集成消息通知系统 7. 构建监控看板 8. 编写自动化测试 9. 部署上线 关键注意事项: 1. 使用Django signals实现审计日志记录 2. 添加CSRF保护和安全中间件 3. 对时间字段进行时区处理 4. 实现数据验证(如预计完成时间不能早于开始时间) 5. 编写详细的API文档(推荐使用Swagger) 这个方案可以扩展的功能: - 项目文件附件管理 - 甘特图展示 - 移动端适配 - 数据导入/导出(Excel) - 多语言支持 - 项目风险评估模块 建议开发顺序:先完成核心项目管理功能,再逐步添加权限控制和消息通知,最后实现可视化看板。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网络毒刘

授人玫瑰,手有余香。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值