【Django】插件开发的应用技巧:实现自定义管理界面和API扩展

创建和扩展自定义管理界面。

如何创建定制管理面板?

创建自定义管理界面是指扩展Django的默认管理界面,加入自定义功能和设计。如果想添加特定要求或业务逻辑,超出默认管理界面的实现范围,这一功能非常便捷。

创建定制管理界面的步骤

    1. 在admin.py文件中注册应用程序的模型

 

    1. 在admin.py文件中创建自定义的模型管理类

 

    通过重写自定义模型管理类的属性和方法来添加功能
from django.contrib import admin
from .models import mymodel

class mymodeladmin(admin.modeladmin):
    list_display = ('id', 'name', 'created_at', 'updated_at')
    list_filter = ('created_at', 'updated_at')
    search_fields = ('name',)
    ordering = ('-created_at',)

admin.site.register(mymodel, mymodeladmin)

参考文献

    Django 管理画面的自定义文档制作

自定义模型显示和字段设置在Django管理界面中。

自定义模型的显示方式。

自定义模型表示是指在管理界面中自定义模型的列表和详细信息的显示字段和顺序。

自定义模型显示的设置方法 [ de ]

class mymodeladmin(admin.modeladmin):
    list_display = ('title', 'author', 'published_date')

admin.site.register(mymodel, mymodeladmin)

如何设置字段

字段设置是指定制自定义字段的详细显示方式和可编辑字段的控制方法。

字段设置实例

class mymodeladmin(admin.modeladmin):
    fields = ('title', 'author', 'published_date')
    readonly_fields = ('published_date',)

admin.site.register(mymodel, mymodeladmin)

请引用以下文章

    在Django管理界面上,可以自定义模型的显示顺序和显示项目,相应的公式文档提供了如何进行自定义模型显示和字段设置的说明。

自定义管理界面的操作和筛选器

如何自定义动作

“动作”是指可以批量执行于管理界面所选择的对象的处理操作。

自定义动作的方法

class mymodeladmin(admin.modeladmin):
    actions = ['make_published']

    def make_published(modeladmin, request, queryset):
        queryset.update(status='published')
    make_published.short_description = "選択した記事を公開済みに変更する"

admin.site.register(mymodel, mymodeladmin)

过滤器的自定义方法

筛选器是指用于在管理界面上筛选对象的条件和规则。

个性化过滤器的方法

class mymodeladmin(admin.modeladmin):
    list_filter = ('published_date', 'author')

admin.site.register(mymodel, mymodeladmin)

请参考这篇文章。

    在django的管理界面上添加自定义操作和过滤器的官方文档。

更改管理界面的外观和主题的方法

使用静态文件创建自定义界面的方法。

使用靜態檔案建立自訂畫面的方法。

静态文件是指如css和javascript等静态文件。通过使用它们可以自定义管理界面的设计和主题。

使用静态文件创建自定义界面的方法

    1. 创建一个static/admin目录

 

    1. 创建想要自定义的css和javascript文件

创建admin/base_site.html并将自定义的静态文件加载进去

修改主题的方式

主题是指用于一次性更改管理界面的外观和自定义对象的样式的设置。

更改主题的方法

from django.contrib import admin
from django.contrib.admin import adminsite

class customadminsite(adminsite):
    site_header = 'カスタム管理画面'

admin_site = customadminsite(name="admin")

admin.site.site_title = 'カスタム管理画面'
admin.site.site_header = 'カスタム管理画面'
admin.site.index_title = 'メニュー'

admin_site.register(mymodel, mymodeladmin)

请引用以下参考文章。

    1. 创建自定义静态文件的方法

 

    自定义Django管理界面

使用Django Rest Framework进行API的扩展

Django REST框架是什么?

Django Rest Framework(以下DRF)是一个基于Django的框架,用于简便地创建Rest API。除了默认的管理界面外,它还专注于扩展API功能。

创建API的步骤

    1. 在serializers.py中创建序列化器

在views.py中创建视图

在urls.py中设置URL模式

API的创建示例

序列化器.py

from rest_framework import serializers
from .models import mymodel

class mymodelserializer(serializers.modelserializer):
    class meta:
        model = mymodel
        fields = '__all__'

视图.py

from rest_framework import viewsets
from .models import mymodel
from .serializers import mymodelserializer

class mymodelviewset(viewsets.modelviewset):
    queryset = mymodel.objects.all()
    serializer_class = mymodelserializer

urls.py的中文释义是:URL路由映射表。

from django.urls import include, path
from rest_framework import routers
from .views import mymodelviewset

router = routers.defaultrouter()
router.register(r'mymodel', mymodelviewset)

urlpatterns = [
    path('', include(router.urls)),
]

请参阅这篇文章。

    使用DRF公式文档,在Django rest framework中创建API。

创建自定义api端点并实施认证。

创建自定义API端点的方法

创建自定义 API 端点是使用 DRF 创建独立的 API 端点,并添加特定的要求和业务逻辑。

创建自定义API端点的步骤

    1. 在views.py文件中创建视图

在urls.py文件中设置url模式

創建自定義API端點的例子

视图.py

from rest_framework.views import apiview
from rest_framework.response import response

class mycustomendpoint(apiview):
    def get(self, request, format=none):
        data = {'message': 'hello, world!'}
        return response(data)

urls.py 的中文翻译为「网址.py」。

from django.urls import path
from .views import mycustomendpoint

urlpatterns = [
    path('mycustom', mycustomendpoint.as_view()),
]

實施認證的方式

API认证是指对API终点进行访问控制和安全性实施的过程。

認證實現範例

from rest_framework.authentication import sessionauthentication, basicauthentication
from rest_framework.permissions import isauthenticated

class mycustomendpoint(apiview):
    authentication_classes = [sessionauthentication, basicauthentication]
    permission_classes = [isauthenticated]

    def get(self, request, format=none):
        data = {'message': 'hello, world!'}
        return response(data)

请参考下文。

    在Django Rest Framework中创建自定义API端点的方法。

【Django】相关的总结

 

以线上学校的方式作为教师进行应用!

 

选择以零日元学习编程

    • techacademyの無料体験

 

    • オンラインスクール dmm webcamp pro

 

    レバテックカレッジ|大学生向け 無料説明会
广告
将在 10 秒后关闭
bannerAds