Hệ thống Admin trong Python Django

Nội dung

Bài này sẽ giới thiệu những nội dung sau:

  • Giới thiệu hệ thống Admin
  • Tạo tài khoản admin để truy cập hệ thống Admin
  • Cách đưa Model vào Admin quản lý
  • Cách tuỳ biến Admin

Giới thiệu hệ thống Admin

Thường ở mỗi website, đặc biệt là web bán hàng, blog hay tin tức thì ta cần một hệ thống admin để quản lý những vấn đề như thêm sửa xoá dữ liệu. Công việc xây dựng admin khá là mất nhiều thời gian và gây ra sự nhàm chán. Ở trong Django đã cung cấp cho ta một hệ thống admin rất là tiện lợi mà ta không cần phải viết ra nó.


Tạo tài khoảm admin để truy cập hệ thống Admin

Bây giờ Kteam sẽ tạo một tài khoản admin để truy cập vào hệ thống, ta sẽ mở terminal vào gõ lệnh:

python manage.py createsuperuser

Sau khi nhập lệnh, hệ thống yêu cầu thông tin tài khoản admin, bạn hay nhập usernameemail và password để khởi tạo:

Bây giờ mình bật server lên và vào đường dẫn /admin và dùng tài khoản vừa tạo để đăng nhập:

 
Sau khi đăng nhập thành công, Admin mặc định sẽ quản lý 2 bảng là User (bảng lưu các user trong hệ thống), và bảng Group nhằm tạo các nhóm trong user với những quyền có thể thực thi trong hệ thống.


Cách đưa Model vào cho Admin quản lý

Bây giờ Kteam muốn hệ thống Admin có thể quản lý model Post từ bài trước. Đầu tiên là vào file admin.py trong app blog. Import model Post qua và register vào bằng dòng code dưới đây.

from django.contrib import admin
from .models import Post
# Register your models here.
admin.site.register(Post)

Bây giờ ta reload trang admin thì sẽ hiển thị ra:

 Vào trong Post ta sẽ thấy 2 bài viết mà ta đã tạo trước đó:


Cách tuỳ biến Admin

Django có thể hỗ trợ cho ta tuỳ biến hệ thống Admin. Như ở phần quản lý Post hiện tại thì chỉ mới hiển thị tiêu đề của Post, giờ Kteam muốn bảng đó hiện thị tiêu đề và ngày viết bài thì làm như sau:

Đầu tiên là phải tạo 1 class PostAdmin kế thừa class admin.ModelAdmin, khởi tạo biến list_display kiểu list chứa 2 string title và date tương ứng 2 field của bảng Post. Sau đó đưa PostAdmin vào tham số register cùng với Post:

class PostAdmin(admin.ModelAdmin):
    list_display = ['title', 'date']

admin.site.register(Post, PostAdmin)

Giờ ta lại kết quả:

Tiếp theo, Kteam muốn tạo filter để lọc bài viết, Kteam sẽ lọc bài viết theo ngày viết bài thì tạo thêm một list là  list_filter chứa giá trị date tương ứng field của bảng Post:

class PostAdmin(admin.ModelAdmin):
    list_display = ['title', 'date']
    list_filter = ['date']

admin.site.register(Post, PostAdmin)

Ta sẽ thấy bên phải có thêm một bảng filter lọc theo ngày, tuần, tháng và năm

Cuối cùng, Kteam muốn tạo một thanh search để dễ dàng tìm kiếm bài viết, Kteam muốn tìm kiếm bài viết dựa vào tiêu đề của bài thì thêm một biến search_fields chứa giá trị title:

class PostAdmin(admin.ModelAdmin):
    list_display = ['title', 'date']
    list_filter = ['date']
    search_fields = ['title']

admin.site.register(Post, PostAdmin)

Bây giờ ta hãy thử nhập tiêu đề để thử tìm kiếm:

Leave a Reply