Django——admin创建和使用

1. Django Admin简介

Django Admin是Django框架自带的一个管理后台工具,它允许开发者通过一个直观的Web界面轻松地管理应用中的数据模型。Admin提供了模型的CRUD(Create,Read, Update, Delete)操作,以及数据的批量处理和搜索功能,极大地简化了日常的数据库管理。它不仅适用于开发阶段,也非常适合在生产环境中进行数据维护。

2. Admin界面定制

Django Admin提供了丰富的定制选项,允许开发者根据项目需求调整界面。

  • 自定义Admin模板:可以通过创建自定义的模板来改变Admin界面的外观,
    AD:首页 | 一个覆盖广泛主题工具的高效在线平台例如修改admin/base_site.html
  • 自定义Admin CSS和JavaScript:可以在settings.py中添加自定义的CSS和JavaScript文件,以改变Admin的样式和行为。

2.2 使用Admin类进行高级配置

Django Admin使用Admin类来配置模型的管理界面。

  • 创建Admin类:在admin.py中,为每个模型创建一个Admin类,例如class MyModelAdmin(admin.ModelAdmin): ...
  • 注册Admin类:使用admin.site.register(MyModel, MyModelAdmin)注册模型和其对应的Admin类。
  • 配置选项:在Admin类中,可以设置各种选项,如list_display用于指定列表页面显示的字段,search_fields用于添加搜索框等。

2.3 字段和字段集的管理

  • 字段管理:可以在Admin类中使用fieldsfieldsets属性来控制编辑页面中字段的显示。
  • 字段集fieldsets
    允许将字段分组,提供更好的用户体验,例如fieldsets = [('基本信息', {'fields': ['name', 'description']}), ...]

2.4 列表页面的优化

  • 自定义列表视图:使用list_display来控制列表页面显示的字段,list_filter来添加过滤器,ordering来设置默认排序。
  • 添加操作按钮:使用actions属性来添加批量操作,如批量删除或标记为已读。

2.5 使用内联模型

内联模型允许在父模型的编辑页面中直接编辑相关联的模型。

  • 定义内联模型:在Admin类中使用inlines
    属性,例如class RelatedModelInline(admin.TabularInline): model = RelatedModel
  • 使用内联模型:在父模型的Admin类中添加内联模型,如inlines = [RelatedModelInline]

3 admin的定制与扩展

3.1 自定义Admin模板

  • 自定义Admin模板:Django Admin允许你自定义Admin界面的外观和行为,包括修改模型的列表、表单和详细页面的外观。
  • 自定义Admin样式:可以通过覆盖Admin模板或使用自定义CSS来调整Admin界面的样式。

3.2 使用Admin actions

  • Admin actions:Django Admin提供了Admin actions功能,允许你在Admin界面上批量处理对象,如批量删除、导出等操作。
  • 自定义Admin actions:你可以编写自定义的Admin actions来执行特定的批量操作。

3.3 集成第三方应用

  • 第三方应用集成:Django允许你轻松地集成第三方应用,通过安装和配置第三方应用,你可以扩展Django的功能。

3.4 国际化和本地化

  • 国际化:Django提供了国际化支持,允许你将应用程序本地化为多种语言。
  • 本地化:通过使用Django的内置国际化工具和翻译机制,可以轻松地将应用程序本地化为不同的语言和地区。

3.5 使用Django REST Framework进行API开发

  • Django REST Framework:DRF是一个强大且灵活的工具,用于构建Web API。它提供了丰富的功能,包括序列化、视图、认证、权限等。
  • API开发:通过DRF,你可以快速构建出符合RESTful设计原则的API,为移动应用、前端框架或其他服务提供数据接口。

代码定制的例子:

# Register your models here.
from django.db import models

from blog.models import Article

admin.site.site_header= "自动化测试平台"
admin.site.site_title= "自动化测试平台"

#@admin.register(Article)

class ArticleAdmin(admin.ModelAdmin):
    #编辑要显示的信息
    list_display = ["title","brief_content","publish_date"]
    #list_filter = ['title']
    #搜索的字段
    search_fields = ['title', 'brief_content']


admin.site.register(Article,ArticleAdmin)

### 使用 Django REST Framework (DRF) 构建 API 示例教程 #### 创建项目应用 为了使用 DRF 构建 API,首先需要安装并设置好 Django DRF 的环境。接着可以创建一个新的 Django 项目以及用于处理书籍数据的应用程序。 ```bash pip install djangorestframework django-admin startproject myapi cd myapi python manage.py startapp books ``` #### 配置 `settings.py` 在项目的 `settings.py` 文件中添加 `'rest_framework'` 到已安装应用程序列表内,并确保包含了必要的中间件其他配置项[^1]。 ```python INSTALLED_APPS = [ ... 'rest_framework', 'books', # 新增的 app 名称 ] REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.AllowAny' ] } ``` #### 设计模型 定义一个简单的图书模型,在 `models.py` 中描述每本书籍应具备哪些字段属性。 ```python from django.db import models class Book(models.Model): title = models.CharField(max_length=200) author = models.CharField(max_length=100) description = models.TextField() def __str__(self): return self.title ``` 运行迁移命令使这些更改生效: ```bash python manage.py makemigrations python manage.py migrate ``` #### 编写序列化器 接下来编写序列化器以转换数据库记录与 JSON 数据之间的映射关系。这一步骤非常重要因为它决定了客户端发送的数据格式以及服务端返回给前端的内容结构。 ```python # serializers.py from rest_framework import serializers from .models import Book class BookSerializer(serializers.ModelSerializer): class Meta: model = Book fields = ['id', 'title', 'author', 'description'] ``` #### 实现视图逻辑 利用 DRF 提供的各种工具简化 CRUD 操作实现过程。这里采用基于类的方法——APIView 来构建基本接口;当然也可以选择更高级别的 ViewSet 或者 GenericViewSet 进行开发[^3]。 ```python # views.py from rest_framework.response import Response from rest_framework.views import APIView from .serializers import BookSerializer from .models import Book class BooksList(APIView): def get(self, request): books = Book.objects.all() serializer = BookSerializer(books, many=True) return Response(serializer.data) def post(self, request): serializer = BookSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=201) return Response(serializer.errors, status=400) class BookDetail(APIView): def get_object(self, pk): try: return Book.objects.get(pk=pk) except Book.DoesNotExist: raise Http404 def get(self, request, pk): book = self.get_object(pk) serializer = BookSerializer(book) return Response(serializer.data) def put(self, request, pk): book = self.get_object(pk) serializer = BookSerializer(book, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=400) def delete(self, request, pk): book = self.get_object(pk) book.delete() return Response(status=204) ``` #### 设置路由规则 最后一步就是把上述编写的视图函数注册到 URL 路由表里去。编辑 `urls.py` 文件完成这项工作。 ```python from django.urls import path from .views import BooksList, BookDetail urlpatterns = [ path('books/', BooksList.as_view(), name='book-list'), path('books/<int:pk>/', BookDetail.as_view(), name='book-detail') ] ``` 现在可以通过访问 `/books/` 地址获取所有书籍的信息列表或将新的书籍条目POST至此处新增加一条记录。对于特定 ID 的单个资源,则可通过 `/books/{pk}/` 访问其详情页执行更新或删除操作[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fish_study_csdn

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值