python測試開發django-17.admin后台管理


前言

通常一個網站開發,需要有個后台管理功能,比如用后台管理發布文章,添加用戶之類的操作。django的admin后台管理主要可以實現以下功能

  • 基於admin模塊,可以實現類似數據庫客戶端的功能,對數據進行增刪改查
  • 於該模塊的數據管理功能,可以二次定制一些實用的功能。

settings.py配置

在INSTALLED_APPS中,默認已經添加相關模塊, 可以不用管

  • django.contrib.admin 管理站點
  • django.contrib.auth 認證系統
  • django.contrib.contenttypes 用於內容類型的框架
  • django.contrib.sessions 會話框架
  • django.contrib.messages 消息框架
  • django.contrib.staticfiles 管理靜態文件框架
# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',          # 管理站點
    'django.contrib.auth',           # 認證系統
    'django.contrib.contenttypes',   # 用於內容類型的框架
    'django.contrib.sessions',       # 會話框架
    'django.contrib.messages',       # 消息框架
    'django.contrib.staticfiles',    # 管理靜態文件框架
    'hello',             # 應用app
]

urls.py創建

urls.py創建admin后台的訪問路徑

from django.contrib import admin
from django.conf.urls import url


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    ....  
]

創建admin管理用戶

django默認是沒管理員用戶的,需要執行指令,手動創建一個admin賬號

python manage.py createsuperuser

如下創建的管理員用戶名admin, 配置郵箱 283340479@qq.com,密碼設置123456

D:\web_djo\helloworld>python manage.py createsuperuser
Username (leave blank to use 'admin'): admin
Email address: 283340479@qq.com
Password:
Password (again):
This password is too short. It must contain at least 8 characters.
This password is too common.
This password is entirely numeric.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

models.py文件創建表

在app 的models.py文件中創建表信息,即表類,相關操作參考前面的一篇https://www.cnblogs.com/yoyoketang/p/10331049.html

# models.py

from django.db import models

# Create your models here.
 
# 我們新建了一個Person類,繼承自models.Model,
class Person(models.Model):
    name = models.CharField(max_length=30)
    age = models.IntegerField()

# 新增一張用戶表,表名為user 字段user_name, psw ,mail 都是字符串類型
class User(models.Model):
    user_name = models.CharField(max_length=30,
                                 primary_key=True)   # 設置為主鍵
    psw = models.CharField(max_length=30)
    mail = models.CharField(max_length=30)

創建表之后需執行

python manage.py makemigrations
python manage.py migrate

訪問admin后台

在瀏覽器上訪問后台http://localhost:8000/admin/,用戶名和密碼就是剛才新建的admin 123456

訪問后查看到的頁面

剛才新建的User和Person並沒有顯示在這里,需要在admin.py中注冊表

admin.py注冊表

如果想讓新建的表,顯示到后台管理里面,需要在admin.py中添加注冊信息,如下在admin.py中注冊2個表信息

# admin.py
from django.contrib import admin
from hello import models

# Register your models here.
admin.site.register(models.User)
admin.site.register(models.Person)

接着刷新下頁面,就能看的剛才注冊的2個表信息了

顯示優化

打開一張表查看詳細信息,顯示的是User object這種內容,如果想顯示具體的標名稱,可以用__str__方法,相關語法參考https://www.cnblogs.com/yoyoketang/p/10342017.html

於是可以優化models.py里面的代碼,加上一個def __str__(self):

class Person(models.Model):
    '''用戶信息'''
    name = models.CharField(max_length=30)
    age = models.IntegerField()

    def __str__(self):
        return self.__doc__ + ":name>" + self.name

class User(models.Model):
    '''注冊表'''
    user_name = models.CharField(max_length=30,
                                 primary_key=True)
    psw = models.CharField(max_length=30)
    mail = models.CharField(max_length=30)

    def __str__(self):
        return self.__doc__ + ":user_name->" + self.user_name

刷新amdin后台頁面后顯示

選個記錄點進去就可以對相應的數據增刪改查了

django交流QQ群:779429633


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM