Django-Admin 4.2.4 on Ubuntu 22.04

Django(发音:[`dʒæŋɡəʊ],D不发音)是一个开源Web应用框架,由Python写成,遵循MVC/MTV模式,在BSD许可证下发行。
MIS(信息管理系统)的基础数据维护(CURD增改查删)重复且繁琐,Django-Admin读取元数据自动生成相应的管理界面,管理者可以通过Django-Admin维护基础数据以及设置权限。Django-Admin模块具有很强的可扩展性,可以基于原框架做定制化开发。
本文讲述如何在Ubuntu 22.04中安装Django-Admin,并实际创建一个MIS项目。

硬件环境

Lenovo ThinkPad T14 Gen2 20W1S3H811: Intel i5-1145G7 + DDR4 16GB + NVMe 512GB

虚拟机宿主环境

Win11 x64 Build 22621.2134 英文专业版 + VirtualBox v7.0.8 r156879

虚拟机客户机软件环境

Xubuntu 22.04最小安装,root账号已启用,APT已换国内源,apt update已完成,Screen 4.09.00 + Net-Tools + Openssh-Server 8.9p1已安装,openssh-server允许root远程登录。

安装Django框架于Python虚拟环境

安装python3-pip
apt install python3-pip
查看pip版本
pip -V
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
安装virtualenv
pip install virtualenv
查看virtualenv版本
virtualenv --version
virtualenv 20.24.3 from /usr/local/lib/python3.10/dist-packages/virtualenv/__init__.py
创建python虚拟环境myEnv
virtualenv myEnv
created virtual environment CPython3.10.12.final.0-64 in 922ms
激活虚拟环境myEnv
cd myEnv
source bin/activate
安装Django框架
(myEnv) ~/myEnv#pip install django
检查Django版本
(myEnv) ~/myEnv#django-admin --version
4.2.4

实际创建一个MIS项目

创建一个管理Wi-Fi信息,包括地点、SSID、BSSID、密码等的MIS项目。

假设已经创建好的虚拟环境myEnv中也安装好了Django框架。
创建项目myProject
(myEnv) ~/myEnv#django-admin startproject myProject # 创建名为myProject的项目
编辑myProject/myProject/settings.py使django-admin允许从其他IP地址访问
(myEnv) ~/myEnv#cd myProject/myProject # 切换/myEnv/myProject/myProject为当前目录
(myEnv) ~/myEnv/myProject/myProject#vi settings.py # 编辑settings.py
找到ALLOWED_HOSTS = [],改为ALLOWED_HOSTS = ['*'],保存退出。
迁移Django数据库
(myEnv) ~/myEnv/myProject/myProject#cd .. # 切换到上一级目录为当前目录
(myEnv) ~/myEnv/myProject#python manage.py migrate # 迁移数据库
迁移完成后,/myEnv/myProject目录下会出现db.sqlite3文件
创建superuser
(myEnv) ~/myEnv/myProject#python manage.py createsuperuser
Username (leave blank to use 'root'):
Email address:
Password:
Password (again):
Superuser created successfully.

启动Django-Admin监听TCP/IP端口8000
(myEnv) ~/myEnv/myProject#python manage.py runserver 0:8000 # 0:8000代表主机所有网卡8000端口都监听;只想在主机某个指定的网卡监听,可以把0换成该网卡的IP地址,例如192.168.1.1:8000。

在浏览器地址栏输入 https://Django-Admin主机IP:8000/,可以看到以下页面:

在浏览器地址栏输入 https://Django-Admin主机IP:8000/admin,打开Django-Admin登录页面:

输入前面创建的superuser账号密码,登录Django-Admin管理后台。可以看到已经默认创建了AUTHENTICATON AND AUTHORIZATION这个App,里面包括Groups和Users这两个已注册的admin类(后面详细讲)。

至此,Django-Admin基础部署完成,下面创建App。

按Ctrl-C停止Django-Admin
^C(myEnv) ~/myEnv/myProject#
创建应用myApp
(myEnv) ~/myEnv/myProject#python manage.py startapp wifi # 创建名为wifi的应用
把应用WiFi添加到myProject项目
(myEnv) ~/myEnv/myProject#cd myProject # 切换/myEnv/myProject/myProject为当前目录
(myEnv) ~/myEnv/myProject/myProject#vi settings.py # 编辑settings.py
在INSTALLED_APPS[]中增加一行
'myApp',
创建应用WiFi的ORM模型/数据库结构
(myEnv) ~/myEnv/myProject/myProject#cd ../wifi # 切换/myEnv/myProject/wifi为当前目录
(myEnv) ~/myEnv/myProject/wifi#vi models.py # 编辑ORM模型文件models.py
输入################################之间的内容
################################

from django.db import models

# Create your models here.
class GenericModel(models.Model):
    publishDatetime = models.DateTimeField(u'Publish Datetime', auto_now_add=True, editable=True)
    updateDatetime = models.DateTimeField(u'Update Datetime', auto_now=True, null=True)

    class Meta:
        abstract = True

class WiFi(GenericModel):
    location = models.CharField(u'Location', max_length=256, null=True, blank=True)
    ssid = models.CharField(u'SSID', max_length=256, null=True, blank=True)
    bssid = models.CharField(u'BSSID', max_length=17, null=True, blank=True)
    password = models.CharField(u'Password', max_length=256, null=True, blank=True)

    class Meta:
        ordering = ('location', 'ssid',)
        verbose_name = 'WiFi'
        verbose_name_plural = 'WiFi'

    def __str__(self):
        if self.ssid is not None:
            return self.ssid
        return '[UnknownWiFi]'

################################
将ORM模型迁移到数据库
(myEnv) ~/myEnv/myProject/wifi#cd .. # 切换上一级目录为当前目录
(myEnv) ~/myEnv/myProject#python manage.py makemigrations wifi # 创建迁移
(myEnv) ~/myEnv/myProject#python manage.py migrate wifi # 迁移
注册admin类
(myEnv) ~/myEnv/myProject#cd wifi # 切换wifi为当前目录
(myEnv) ~/myEnv/myProject/wifi#vi admin.py # 编辑admin.py
输入################################之间的内容
################################

from django.contrib import admin

# Register your models here.
from wifi.models import WiFi

@admin.register(WiFi)
class WiFiAdmin(admin.ModelAdmin):
    list_display = ('id', 'location', 'ssid', 'bssid', 'password',)
    list_per_page = 100
    ordering = ('location', 'ssid',)
    #list_editable = ['location', 'bssid',]
    list_display_links = ('id', 'location', 'ssid', 'bssid',)

################################

启动Django-Admin监听TCP/IP端口8000
(myEnv) ~/myEnv/myProject/wifi#cd ..
(myEnv) ~/myEnv/myProject#python manage.py runserver 0:8000

在浏览器地址栏输入 https://Django-Admin主机IP:8000/admin,用superuser账号密码登录。可以看到新增了wifi应用(Django-Admin默认把App名称均大写),里面有名为WiFi的admin类。

点击WiFi进入WiFi应用;再点击ADD WIFI ➕尝试增加一条记录,点击Save保存。

迁移Django-Admin项目

在源服务器上备份
在源服务器上按下Ctrl-C停止Django-Admin监听,deactivate退出虚拟环境,将myEnv/myProject打包压缩: tar -zcvf ../myProject.datetime.tar.gz ./*
在目的服务器上恢复
在目的服务器上按下Ctrl-C停止Django-Admin监听,deactivate退出虚拟环境,在项目目录myProject中解压缩: tar -zxvf ../myProject.datetime.tar.gz .
在目的服务器上激活虚拟环境myEnv: #source bin/activate,启用Django-Admin监听: python manage.py runserver 0:8000


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *