首页
DST服务器列表
关于
推荐
AI深度搜索
Search
1
庄子的回文——从零开始的入门级64位ROP
1,143 阅读
2
Windows沙盒——运行不安全的软件
842 阅读
3
多模态大模型文本识别和理解能力测评
96 阅读
4
重温《幽灵公主》:成年后的理性视角与沉浸体验的界限
30 阅读
5
Django Admin安装及入门教程
16 阅读
研究笔记
技术文档
工具和库
网络安全
心理学
生活小记
登录
/
注册
Search
标签搜索
新手教程
Django
Midjourney
binary
64位
ROP
Sora
pwn
UI设计
AI图像生成
ODBC
后台管理
古籍
手写文本识别
Django Admin
吉卜力
图像生成
大模型
LLM
OCR
libero
累计撰写
7
篇文章
累计收到
15
条评论
首页
栏目
研究笔记
技术文档
工具和库
网络安全
心理学
生活小记
页面
DST服务器列表
关于
推荐
AI深度搜索
搜索到
1
篇与
的结果
2025-05-08
Django Admin安装及入门教程
预计阅读时间:30-45 分钟。如果您是新手并跟随步骤实际操作,可能需要更多时间。开始之前在正式踏上 Django Admin 的学习之旅前,我们先花几分钟明确几个基本问题。这会帮助你更好地理解 Django Admin 是什么,它能做什么,以及它在整个 Django 生态中的位置。同时,我会用最简洁的语言告诉你使用 Django Admin 的核心思路。Django Admin有什么用?简单来说,Django Admin 是一个非常强大且方便的工具,它能帮你快速生成一个功能完善的数据管理后台。想象一下,你的网站或应用需要管理用户信息、用户权限、下拉菜单的选项、网站的公告。在传统开发模式下,这些都需要你手动编写前端页面、后端接口逻辑,并处理数据的增删改查。而使用 Django Admin:你几乎不需要编写任何前端界面代码(HTML, CSS, JavaScript)或复杂的后端视图逻辑。你只需要专注于定义你的数据模型 (Models) —— 也就是告诉 Django 你的数据长什么样。然后通过一些简单的配置 (Admin classes),Django Admin 就能自动为你生成一个专业的、可定制的管理界面。管理员可以直接在这个界面上进行数据的增、删、改、查操作,无需开发人员直接操作数据库,既安全又高效。它特别适合数据驱动的管理任务。如果你的业务系统主要就是对各种数据对象进行维护,或者你需要在主业务系统之外快速搭建一个后台管理工具来维护一些配置数据、辅助数据,那么 Django Admin 会是一个极佳的选择。当然,对于那些业务流程非常复杂、交互逻辑高度定制的应用,Django Admin 可能不是直接的解决方案,但它仍然可以作为系统的一部分发挥重要作用。Django和Django Admin有什么关系?首先,你需要知道 Django 是一个高级的 Python Web 框架。它鼓励快速开发和简洁、实用的设计。你可以用 Django 来构建各种复杂的 Web 应用,从简单的博客到大型电商平台,甚至是你正在使用的业务系统(如果它是 Python 开发的话)。Django 负责处理请求、响应、数据库交互、模板渲染等 Web 开发的方方面面。Django Admin 则是 Django 框架内置的一个强大应用(app)。你可以把它想象成 Django 这个“大工具箱”里的一件“超级工具”。当你创建一个 Django 项目时,Admin 功能就已经准备好了,你只需要激活并配置它,就能享受到它带来的便利。它充分利用了 Django 的模型层 (Models)、表单 (Forms)、认证授权 (Auth) 等核心组件,是 Django “ Batteries included ”(自带电池,开箱即用)理念的完美体现。所以,Django 是一个全功能的 Web 框架,而 Django Admin 是这个框架中一个专注于快速生成数据管理后台的子系统或应用。Django Admin的核心用法如果你想用一两句话理解 Django Admin 的核心用法,那就是:定义你的数据长什么样 (Models):用 Python 代码描述你想要管理的数据结构(比如一个“学生”信息表,包含姓名、学号、班级等字段)。告诉 Admin 如何展示和管理这些数据 (Admin Classes):通过简单的配置,告诉 Django Admin 你希望在管理后台如何显示这些“学生”信息,比如列表页显示哪些字段、哪些字段可以搜索、哪些字段可以作为筛选条件等。就这么简单! 完成这两步,Django Admin 就会自动为你生成一个功能齐全的网页界面,你可以通过浏览器访问它,对“学生”数据进行添加、查看、修改和删除操作,完全不需要你写一行 HTML 或 JavaScript!接下来的教程,就会带你一步步实践这个过程。Conda安装方法conda是Python的包管理和环境管理软件,可以让你的电脑安装多个Python环境,这样你可以同时开发多个Python项目而不冲突。这是conda的官方网站,根据自己的系统下载相应的安装包并进行安装即可:Download Now | Anaconda (如果需要图形页面就安装Anaconda,不需要就安装Miniconda)安装成功后,你可以打开命令行并运行conda env list 来验证你是否安装成功,如果安装成功,这条命令会列出一个名为base的Python环境,它是conda安装后自动创建的Python环境。Conda用法下面列出了一些常见的conda命令。你可以先跳过这部分,等用到的时候再回来查查看。环境管理命令创建新环境:conda create --name myenv激活环境:conda activate myenv ,激活名为 myenv 的环境,使其成为当前会话的活动环境。此时你在命令行中的python会默认为myenv的python,pip安装的包也只会在myenv下安装。停用环境:conda deactivate ,停用当前激活的环境,返回到base环境或系统默认环境。列出所有环境:conda env list ,列出所有已创建的 Conda 环境。删除环境:conda remove --name myenv --all包管理命令注:你也可以用python自带的包管理工具pip,不一定要用conda安装包:conda install package-name在当前激活的环境中安装名为 package-name 的软件包。更新包:conda update package-name更新当前环境中名为 package-name 的软件包到最新版本。删除包:conda remove package-name 从当前环境中删除名为 package-name 的软件包。列出已安装的包:conda list列出当前环境中所有已安装的软件包及其版本信息。其他有用命令搜索包:conda search package-name搜索 Conda 仓库中可用的名为 package-name 的软件包。更新 Conda 自身:conda update conda更新 Conda 包管理器到最新版本。导出环境:conda env export > environment.yml将当前环境的配置信息导出到一个 environment.yml 文件中,可以用于在其他系统上重建环境。从文件创建环境:conda env create -f environment.yml使用 environment.yml 文件创建一个新的 Conda 环境。项目创建下面以项目名为LemisManage为例,请根据实际项目名称进行替换。创建项目环境:conda env create -f environment-common.yml -n LemisManage -n后面的是环境名称。在Pycharm中创建项目:项目创建后,你可以尝试直接运行项目,来验证项目及项目环境是否正常,如果正常,访问网站根路径你可以看到这样的页面:项目配置修改项目运行的端口号和绑定的IP点击pycharm右上角的Edit Configurations:在项目运行配置页面可以配置绑定的IP和端口号,如果你想绑定本机拥有的所有IP,就将图中的localhost改为0.0.0.0:项目配置文件项目配置文件位于LemisManage/settings.py (相当于Springboot的application.yml),你可以像正常的python文件一样在里面编写Python代码,这个文件里面的全局变量会作为配置项。下面列出了一些通用的配置,请你在配置文件中找到这些配置项并根据实际情况进行替换/新增: # 指定哪些主机名或域名可以合法地向 Django 应用发送请求 ALLOWED_HOSTS = ['*'] if DEBUG else [] INSTALLED_APPS = [ # 本项目的应用 # 第三方应用 "import_export", "simpleui", # Django自带应用 "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", ] # 指定项目默认的语言代码,Django自带国际化支持,例如Django Admin就支持很多语言 LANGUAGE_CODE = 'zh-hans' # Django也带有多时区的支持,这个配置项告诉Django本地的时间是什么时区 TIME_ZONE = 'Asia/Shanghai' # 不启用时区支持,如果你的应用只在中国使用,放心把这个关掉,省很多事 USE_TZ = False # 日志配置 LOGGING = { 'version': 1, 'disable_existing_loggers': False, # 是否禁用未在此处声明的所有日志记录器 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'level': 'WARNING', # 改为DEBUG可以看到执行的SQL 'handlers': ['console'], 'propagate': False, }, }, }数据库配置,默认情况下Django会使用SQLite作为数据库,如果你使用Django Admin来从头构建你的Web应用,那你完全可以直接使用默认的SQLite数据库,对于用户量最多为几百的情况是完全够用的。下面以SQLServer为例进行展示,OPTIONS用于配置数据库驱动,这和你的操作系统和连接的数据库有关,具体请参考另一篇文章《ODBC安装及Django配置》,你也可以参考Django数据库配置(Django官方文档,包含Django官方支持的PostgreSQL、MariaDB、MySQL、Oracle、SQLite)的配置方法:DATABASES = { 'default': { 'ENGINE': 'mssql', 'NAME': 'djangoadmin', 'USER': 'sa', 'PASSWORD': '**********', 'HOST': '127.0.0.1', 'PORT': '7011', 'OPTIONS': { ...... }, } }配置完成后,请启动Django项目,Django会检查配置文件是否正确,数据库连接是否正常。数据库初始化Django默认安装的应用(可以在settings.py的INSTALLED_APPS中看到)提供了一些功能,这些功能需要创建数据表才能正常使用,请在Pycharm中打开终端:执行命令(注意,下面的命令会自动在数据库中创建表: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)pip install django==5.0.6 --force-reinstall # 最新的5.1版本太新了,不兼容mssql后端 python manage.py makemigrations python manage.py migrate出现若干表示成功的OK提示:创建超级用户并登录在Pycharm的终端中,输入命令python manage.py createsuperuser ,按照提示输入信息访问/admin,登录到管理页面成功!创建你的应用和模型如果你正在使用Django Admin创建一个全新的数据管理应用,需要创建新的数据表,你可以这样做:在Pycharm的终端输入命令python manage.py startapp myapp以创建一个应用,myapp是应用名称,一个应用对应了一个业务。打开settings.py ,将应用添加在INSTALLED_APPS中:INSTALLED_APPS = [ # 本项目的应用 "myapp", ...... ]打开myapp/apps.py ,为应用添加一个人类友好的名字:from django.apps import AppConfig class MyappConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'myapp' verbose_name = "我的应用"打开myapp/models.py ,在这个文件中定义数据模型,一个数据模型对应一张数据表:from django.db import models # Create your models here. class Document(models.Model): doc_num = models.CharField("文档编号", max_length=32, db_index=True) # db_index=True表示为这个字段建立数据库索引 name = models.CharField("文档名称", max_length=50, blank=True, db_index=True) # blank=True表示用户填写表单时,这个字段不是必填项 count = models.PositiveIntegerField("数量", null=True, blank=True) # null=True表示在数据库表中,这个字段允许为NULL num_pages = models.PositiveIntegerField("页数", null=True, blank=True) storage_location = models.CharField("存放位置", max_length=200, blank=True, db_index=True) create_time = models.DateTimeField(verbose_name="创建时间", auto_now_add=True) # auto_now_add表示创建对象时,自动将这个字段赋值为当前时间 class Meta: verbose_name = "文档" # 单数名称 verbose_name_plural = verbose_name # 复数名称 # 用于定义一个人类友好的字符串表示 def __str__(self): if self.name: return self.doc_num + " " + self.name else: return self.doc_num 若你不定义主键,Django会默认添加一个名为id的自增整数主键。创建好模型后,运行下面的命令,将模型同步到数据库中。python manage.py makemigrations # 生成描述模型变更的迁移文件(在应用的migrations文件夹中) python manage.py migrate # 读取迁移文件,同步到数据库迁移完成后,你可以在数据库中看到自动创建的数据表。模型默认的数据表名应用名_模型名小写 ,你可以在模型类的Meta中自定义db_table = "数据表名"将模型注册到Django Admin中打开myapp/admin.py,编写如下代码:from django.contrib import admin from .models import Document # Register your models here. @admin.register(Document) class DocumentAdmin(admin.ModelAdmin): list_display = ("doc_num", "name", "count", "num_pages", "storage_location", "create_time") # 按顺序展示这些列 search_fields = ("doc_num", "name") # 适合进行文本搜索的字段 list_filter = ("storage_location", ) # 适合用下拉菜单进行过滤的字段 list_per_page = 10 # 每页展示的数据条数你可以在Django管理站点找到更多的ModelAdmin配置访问/admin (你不需要手动重启服务器,只需刷新页面即可,因为Django检测到你修改了代码会自动重启)根据数据表反向得到模型的定义如果你已经有了一套成熟的web系统,只想用Django Admin实现数据管理功能,不需要创建新的数据表,你可以这样做:使用命令python manage.py inspectdb [数据表名] ,例如python manage.py inspectdb myapp_document ,然后Django会输出下面的内容:# This is an auto-generated Django model module. # You'll have to do the following manually to clean this up: # * Rearrange models' order # * Make sure each model has one field with primary_key=True # * Make sure each ForeignKey and OneToOneField has `on_delete` set to the desired behavior # * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table # Feel free to rename the models, but don't rename db_table values or field names. from django.db import models class MyappDocument(models.Model): id = models.BigAutoField(primary_key=True) doc_num = models.CharField(max_length=32, db_collation='Chinese_PRC_CI_AS') name = models.CharField(max_length=50, db_collation='Chinese_PRC_CI_AS') count = models.IntegerField(blank=True, null=True) num_pages = models.IntegerField(blank=True, null=True) storage_location = models.CharField(max_length=200, db_collation='Chinese_PRC_CI_AS') create_time = models.CharField(max_length=27) class Meta: managed = False db_table = 'myapp_document'你可能需要对这些代码进行如下修改,以让Django Admin更好地理解和展示你的数据表:为每个字段添加一个人类友好的名称verbose_name = ""检查这些字段是否是正确的,例如上面的create_time应该是models.DateTimeField ,而不是models.CharField 。调整字段的blank = True/False ,如果它是必填的,设为False,如果不是必填的,设为True如果你保持Meta中的managed = False ,在执行manage.py makemigrations命令时不会自动检测这个模型的修改,也就是说Django不会将你在代码中对模型进行的修改同步到数据库中,你可以先保持这个设置,等你熟悉Django以后再尝试将其改为True。如果你的表存在外键,你需要手动设置models.ForeignKey的on_delete属性,例如models.ForeignKey(on_delete=models.CASCADE) ,表示这是一个级联删除的外键。然后你可以参考前面的教程,将模型注册到Django Admin中,实现数据管理的功能。本教程的项目代码{anote icon="fa-download" href="https://www.liuyh.com/download/file?cid=311" type="info" content="LemisManage.zip"/}
2025年05月08日
16 阅读
0 评论
1 点赞