一、创建项目
这里通过开发工具创建
1.1 创建后的项目结构
根据前面的知识,这里的项目功能已经不需要再次介绍了,但是这里再解释一遍。
-
最外层的 demo3/ 根目录只是你项目的容器, 根目录名称对 Django 没有影响,你可以将它重命名为任何你喜欢的名称。
-
manage.py: 一个让你用各种方式管理 Django 项目的命令行工具。
-
里面一层的 demo3/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。
-
MyAdmin/init.py
:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。 -
demo3/settings.py:Django 项目的配置文件。
-
demo3/urls.py:Django 项目的 URL 声明,就像你网站的“目录”
-
demo3/asgi.py:作为你的项目的运行在 ASGI 兼容的 Web 服务器上的入口。
-
demo3/wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。
2.2 启动
直接点击开发工具上的运行按钮即可。后续都尽量使用开发工具来完成,不在使用命令了。
-
不是命令不重要,而是各有所爱
2.3 运行后成功
2.4 访问后台管理页面
http://127.0.0.1:8000/admin/login/?next=/admin/
输入用户名和密码即可;那如何去找一下用户名和密码呢?
2.5 关注一下后台日志:要求数据迁移
此时,需要看一下后台的日志,如下
这里有一个说明,需要去数据迁移后,才能使用 admin,auth等功能,这里的admin指的就是后台管理功能哦。
下面,旧数据迁移下:
需要到项目的最外层目录下,进行数据迁移哦
迁移后的数据结构如下:
2.6 如何创建登录admin用户呢
通过项目的manage.py
看一下,都有哪些可用命令哦
-
这里不得不用命令了
这个是强大的功能,可以辅助生产一些系统所用数据。
这里测 ceratesuperuser 就是用于创建系统管理员用户的
这里用户名和密码我使用的是 pythonhome python2023。
2.7 登录
然后就可以登录试试了
你将会看到几种可编辑的内容:组和用户。它们是由 django.contrib.auth 提供的,这是 Django 开发的认证框架。
这里是英文的,后面修改成中文的。
2.8 修改成中文显示
可以参考官网的这里的说明https://docs.djangoproject.com/zh-hans/4.2/topics/i18n/
diango支持I18N(国际化),需要自己开启
# 中文
LANGUAGE_CODE = 'zh-Hans'
# 时区
TIME_ZONE = 'Asia/Shanghai'
# 开启国际化
USE_I18N = True
二、开发一个应用:TODO
TODO:就是待做列表,实现一个待做列表的功能
2.1 先简单分析一下
待做列表都有什么,如果说是一个完整的待做列表,这里就会有很多考虑了。但是我们不考虑这么多,我们的目标是:先实现,后优化。
分析一下TODO列表的模型会有哪些,可能如下:
字段 | 类型 | 说明 |
---|---|---|
待做事项 | 字符串类型 | 描述要做的事情 |
创建日期 | 日期时间类型 | 什么时候创建的这条 |
完成日期 | 日期时间类型 | 这条记录什么时候完成的 |
以上三个字段就是我们应用的主要字段了。
是不是感觉少了什么,那就是主键,如果使用模型自带的id的话,那我们就可以不写这个ID了,django又提高了效率;
-
问题:django给生成的默认id字段,是应用用还是不用呢?
-
回答:千人千面,有好处也有坏处;如果你想全局控制,那就可以也把id控制进来。
2.2 创建应用
如果创建应用,还是得通过命令,所以,命令还是必须要使用
创建应用时:一定要注意在项目最外层的目录下:
使用的命令python .manage.py startapp TodoApp
-
这里为啥叫做TodoApp呢,我个人习惯,应用后面增加一个App。
创建应用后,项目结构的变化如下:
2.2.1 创建应用后的几个注意点
-
在app.py中,内容如下:这个应用的名字就是TodoApp了,在其他地方使用的时候,均使用该名字哦。
from django.apps import AppConfig
class TodoappConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'TodoApp'
-
注册到settings.py中
INSTALLED_APPS = [
# 需要注册到这里
'TodoApp.apps.TodoappConfig',
]
2.3 编写模型
在models.py
中编写模型
from django.db import models
class TodoModel(models.Model):
# 根据设计好的字段来编写哦
todoName = models.CharField(max_length=200)
create_date = models.DateTimeField("创建日期")
over_date = models.DateTimeField("完成日期")
记得数据迁移哦
数据迁移,可以全部迁移,也可以指定应用迁移,这里就是用指定应用迁移
python manage.py makemigrations TodoApp
python manage.py migrate TodoApp
查看数据库
2.4 配置让admin管理起来
在项目管理模块中的admin.py中注册模型即可
from django.contrib import admin
# Register your models here.
# 注册TodoApp
from TodoApp.models import TodoModel
admin.site.register(TodoModel)
2.5 重新运行起来
2.6 新增操作
增加后显示列表如下
但是,这里为什么显示的是这样的呢,为什么显示的列表是英文呢,这个时候,需要我们给我们的模型,编写一些显示的内容了
2.7 让admin中列表显示更有意义
-
修改模型:没有增加字段,不需要迁移
from django.db import models
# Create your models here.
class TodoModel(models.Model):
# 根据设计好的字段来编写哦
todoName = models.CharField(max_length=200)
create_date = models.DateTimeField("创建日期")
over_date = models.DateTimeField("完成日期")
# 这里的代码,决定了在admin中列表的显示
def __str__(self):
return self.todoName
刷新页面
上面,还有很多意思不明确的地方,比如Todo models, 选择todo model来修改,这里对使用者而言就比较难以理解。
-
给模型增加Meta选项
参考地址:https://docs.djangoproject.com/zh-hans/4.2/ref/models/options/#verbose-name
模型修改如下
from django.db import models
# Create your models here.
class TodoModel(models.Model):
# 根据设计好的字段来编写哦
todoName = models.CharField(max_length=200)
create_date = models.DateTimeField("创建日期")
over_date = models.DateTimeField("完成日期")
# 这里的代码,决定了在admin中列表的显示
def __str__(self):
return self.todoName
class Meta:
# 当单数,也就是在单一情况下如何描述这个模型
verbose_name = "代办事项"
# 复数,也就是当多个模型情况下如何描述
verbose_name_plural = "代办列表"
效果如下:
原文始发于微信公众号(Python之家):Django-7-Admin入门
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/198160.html