Django-7-Admin入门

一、创建项目

这里通过开发工具创建

Django-7-Admin入门
image.png

1.1 创建后的项目结构

Django-7-Admin入门
image.png


根据前面的知识,这里的项目功能已经不需要再次介绍了,但是这里再解释一遍。


  • 最外层的 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 启动

直接点击开发工具上的运行按钮即可。后续都尽量使用开发工具来完成,不在使用命令了。

  • 不是命令不重要,而是各有所爱

Django-7-Admin入门
image.png

2.3 运行后成功

Django-7-Admin入门
image.png

2.4 访问后台管理页面

http://127.0.0.1:8000/admin/login/?next=/admin/

Django-7-Admin入门
image.png


输入用户名和密码即可;那如何去找一下用户名和密码呢?


2.5 关注一下后台日志:要求数据迁移

此时,需要看一下后台的日志,如下

Django-7-Admin入门
image.png


这里有一个说明,需要去数据迁移后,才能使用 admin,auth等功能,这里的admin指的就是后台管理功能哦。
下面,旧数据迁移下:
需要到项目的最外层目录下,进行数据迁移哦

Django-7-Admin入门
image.png


迁移后的数据结构如下:

Django-7-Admin入门
image.png

2.6 如何创建登录admin用户呢

通过项目的manage.py看一下,都有哪些可用命令哦

  • 这里不得不用命令了

Django-7-Admin入门
image.png


这个是强大的功能,可以辅助生产一些系统所用数据。
这里测 ceratesuperuser 就是用于创建系统管理员用户的

Django-7-Admin入门
image.png


这里用户名和密码我使用的是 pythonhome  python2023。


2.7 登录

然后就可以登录试试了

Django-7-Admin入门
image.png

你将会看到几种可编辑的内容:组和用户。它们是由 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
Django-7-Admin入门
image.png

二、开发一个应用:TODO

TODO:就是待做列表,实现一个待做列表的功能

2.1 先简单分析一下

待做列表都有什么,如果说是一个完整的待做列表,这里就会有很多考虑了。但是我们不考虑这么多,我们的目标是:先实现,后优化。
分析一下TODO列表的模型会有哪些,可能如下:

字段 类型 说明
待做事项 字符串类型 描述要做的事情
创建日期 日期时间类型 什么时候创建的这条
完成日期 日期时间类型 这条记录什么时候完成的

以上三个字段就是我们应用的主要字段了。
是不是感觉少了什么,那就是主键,如果使用模型自带的id的话,那我们就可以不写这个ID了,django又提高了效率;

  • 问题:django给生成的默认id字段,是应用用还是不用呢?

  • 回答:千人千面,有好处也有坏处;如果你想全局控制,那就可以也把id控制进来。

2.2 创建应用

如果创建应用,还是得通过命令,所以,命令还是必须要使用
创建应用时:一定要注意在项目最外层的目录下:
使用的命令python .manage.py startapp TodoApp

  • 这里为啥叫做TodoApp呢,我个人习惯,应用后面增加一个App。

Django-7-Admin入门
image.png


创建应用后,项目结构的变化如下:

Django-7-Admin入门
image.png

2.2.1 创建应用后的几个注意点

  1. 在app.py中,内容如下:这个应用的名字就是TodoApp了,在其他地方使用的时候,均使用该名字哦。

from django.apps import AppConfig


class TodoappConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'TodoApp'
  1. 注册到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
Django-7-Admin入门
image.png
python manage.py migrate TodoApp
Django-7-Admin入门
image.png


查看数据库

Django-7-Admin入门
image.png

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 重新运行起来

Django-7-Admin入门
image.png

2.6 新增操作

Django-7-Admin入门
image.png


增加后显示列表如下

Django-7-Admin入门
image.png


但是,这里为什么显示的是这样的呢,为什么显示的列表是英文呢,这个时候,需要我们给我们的模型,编写一些显示的内容了


2.7 让admin中列表显示更有意义

  1. 修改模型:没有增加字段,不需要迁移

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

刷新页面

Django-7-Admin入门
image.png


上面,还有很多意思不明确的地方,比如Todo models, 选择todo model来修改,这里对使用者而言就比较难以理解。


  1. 给模型增加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 = "代办列表"

效果如下:

Django-7-Admin入门
image.png


原文始发于微信公众号(Python之家):Django-7-Admin入门

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/198160.html

(1)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!