当前位置: 首页 > 文档资料 > Python 全栈 >

第四步 启用网站admin管理

优质
小牛编辑
129浏览
2023-12-01

第四步:启用网站Admin管理

(1). 数据迁移

Django框架中有一个非常强大的应用功能--自动管理界面,常被Web平台管理者使用,去管理整个Web平台。

默认情况下,在settings.py配置文件中INSTALLED_APPS包含以下应用程序,这些应用程序都是由Django提供:

  • django.contrib.admin - 管理网站。你会很快使用它。
  • django.contrib.auth - 认证系统。
  • django.contrib.contenttypes - 内容类型的框架。
  • django.contrib.sessions - 会话框架
  • django.contrib.messages - 消息框架。
  • django.contrib.staticfiles - 管理静态文件的框架。

为了后续的开发,默认这些应用程序都是包含在里面的。

使用这些Django自带的应用程序,需要我们在数据库中创建一些数据表对应,然后才能使用它们。为此,请运行以下命令(数据结构迁移):

$ python manage.py migrate

其中该migrate命令查看该INSTALLED_APPS设置,并根据myweb/settings.py文件中的数据库设置和应用程序随附的数据库迁移创建任何必需的数据库表(稍后将介绍)。您会看到适用于每个迁移的消息。

执行上面命令后的输出结果
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

# 默认情况下自动在我们的数据库中创建了10张表,具体如下:
MariaDB [mydemo]> show tables;
+----------------------------+
| Tables_in_mydemo           |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| stu                        |
+----------------------------+
11 rows in set (0.00 sec)

(2). 创建管理员用户

首先,我们需要创建一个可以登录管理站点的用户。运行以下命令:

    $ python manage.py createsuperuser

    # 输入您所需的用户名,然后按Enter键。
    Username: admin

    # 然后将提示您输入所需的电子邮件地址:
    Email address: admin@example.com

    # 最后一步是输入你的密码。您将被要求输入密码两次,第二次作为第一次的确认
    Password: **********
    Password (again): *********
    Superuser created successfully.

(2). 启动开发服务器

默认情况下,Django管理员站点被激活。让我们开始开发服务器并探索它。

启动开发服务器命令如下:

    $ python manage.py runserver 0:8000

现在,打开一个Web浏览器,访问地址: http://127.0.0.1:8000/admin/

(3). 设置时区和语言:

编辑myweb/settings.py配置文件:

...

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

...

(4). 将我们自定义的应用程序的加入到后台管理

但我们的自定义应用程序在哪里?并没有显示在后台管理索引页面上。

要做到这一点,打开myapp/admin.py 文件,并编辑代码如下:

from django.contrib import admin

from myapp.models import Stu

admin.site.register(Stu)

(5). 更深入设计后台管理

# 编辑myapp/models.py文件,在Stu类中添加如下信息,让后台管理显示中文字段。

class Stu(models.Model):
    '''自定义Stu表对应的Model类'''
    #定义属性:默认主键自增id字段可不写
    id = models.AutoField("学号",primary_key=True)
    name = models.CharField("姓名",max_length=16)
    age = models.SmallIntegerField("年龄")
    sex = models.CharField("性别",max_length=1)
    classid=models.CharField("班级",max_length=8)

    # 定义默认输出格式
    def __str__(self):
        return "%d:%s:%d:%s:%s"%(self.id,self.name,self.age,self.sex,self.classid)

    # 自定义对应的表名,默认表名:myapp_stu
    class Meta:
        db_table="stu"
        verbose_name = '浏览学生信息'  
        verbose_name_plural = '学生信息管理'
# 编辑myapp/admin.py 文件,实现信息管理的个性化定制

from django.contrib import admin

# Register your models here.
from myapp.models import Stu

#Stu模型的管理器(装饰器写法)
@admin.register(Stu)
class StuAdmin(admin.ModelAdmin):
    #listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键)
    list_display = ('id','name','age','sex','classid')

    #设置哪些字段可以点击进入编辑界面
    list_display_links = ('id','name')

    #list_per_page设置每页显示多少条记录,默认是100条
    list_per_page = 10

    #ordering设置默认排序字段,负号表示降序排序
    ordering = ('id',)  #-id降序

    #list_editable 设置默认可编辑字段
    #list_editable = ['age','sex','classid']

    #其他请详见手册文档说明