Django 后台与便签

1. 什么是后台管理

后台管理是网页管理员利用网页的后台程序管理和更新网站上网页的内容。各网站里网页内容更新就是通过网站管理员通过后台管理更新的。

2. 创建超级用户

1. python .\manage.py createsuperuser

2. 输入账号密码等信息

Username (leave blank to use 'sylviazhang'): admin

Email address: xxx@qq.com

Password: xxxxx

Password (again):xxxxx

This password is too short. It must contain at least 8 characters. This password is too common. Bypass password validation and create user anyway? [y/N]: y Superuser created successfully.

3. 打开网址 http://127.0.0.1:8000/admin/login/?next=/admin/

4. 输入username: admin, password: xxxxx, 点击login,就成功登录啦

3. 配置后台管理语言

登录成功后的页面如下:

配置后台管理语言 LANGUAGE_CODE

系统默认是

复制代码
LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'utc'

如果想改成中文:

复制代码
LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'   # utc会晚8小时

刷新网页,就变成了中文

4. 定义模型

4.1 terminal 输入 django-admin startapp the_9 回车

4.2. 配置模型 tutorial子文件夹 settings.py 里面 INSTALLED_APPS 中括号里面添加 "the_9"

复制代码
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    "the_3",
    "the_5",
    "the_6",
    "the_7",
    "the_8",
    "the_9",
]

4.3. 创建模型 , the_9\models.py

python 复制代码
from django.db import models

# Create your models here.

"""
问题 -- (问题是什么, 什么时间)

模型 -- (回答问题, 关注度)
"""

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField("发布日期")

class Choice(models.Model):
    question = models.ForeignKey(Question,on_delete=models.CASCADE)
    choice_text = models.TextField()
    votes = models.IntegerField(default=0)

4.4. 接下来是迁移,迁移完成后再纳入后台管理系统

4.4.1 terminal 输入 python .\manage.py 回车

(class15env) D:\Python\xxx\class15\tutorial>python .\manage.py

Type 'manage.py help <subcommand>' for help on a specific subcommand.

Available subcommands:

auth

changepassword

createsuperuser

contenttypes

remove_stale_contenttypes

django

check

compilemessages

createcachetable

dbshell

diffsettings

dumpdata

flush

inspectdb

loaddata

makemessages

makemigrations

migrate

sendtestemail

shell

showmigrations

sqlflush

sqlmigrate

sqlsequencereset

squashmigrations

startapp

startproject

test

testserver

sessions

clearsessions

staticfiles

collectstatic

findstatic

runserver

4.4.2 terminal 输入 python .\manage.py makemigrations回车

(class15env) D:\Python\xxx\class15\tutorial>python .\manage.py makemigrations

Migrations for 'the_8':

the_8\migrations\0002_alter_entry_blog.py

  • Alter field blog on entry

Migrations for 'the_9':

the_9\migrations\0001_initial.py

  • Create model Question

  • Create model Choice

4.4.3 迁移 terminal 输入 python .\manage.py migrate回车

(class15env) D:\Python\xxx\class15\tutorial>python .\manage.py migrate

Operations to perform:

Apply all migrations: admin, auth, contenttypes, sessions, the_6, the_8, the_9

Running migrations:

Applying the_8.0002_alter_entry_blog... OK

Applying the_9.0001_initial... OK

5. 模型纳入后台管理

5.1 在the_9\admin.py配置

python 复制代码
from django.contrib import admin
from .models import Question, Choice

# Register your models here.

admin.site.register(Question)
admin.site.register(Choice)

5.2. 刷新浏览器, 可以看到Questions和Choices已经配置进来

6. 操作新加入的模型

6.1 点击Questions后面的添加

6.2 输入内容,时间选择今天,现在,保存

6.3 出现Question object 对象是因为在 models.py我们没有添加 str

python 复制代码
class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField("发布日期")

    def __str__(self):
        return self.question_text

6.4 刷新浏览器 , 1月1号大家准备去什么地方就出来了

6.5 再添加一条Question

6.6 同样给 Choice也加上 str

python 复制代码
class Choice(models.Model):
    question = models.ForeignKey(Question,on_delete=models.CASCADE)
    choice_text = models.TextField()
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choice_text

6.7 操作Choices, 点击Choice后面的添加, Question选择第一个 1月1号去什么地方?输入内容,保存

可以再添加一条

7. 自定义字段展示

7.1 在the_9\admin.py 里面自定义

python 复制代码
from django.contrib import admin
from .models import Question, Choice

# Register your models here.

class QuestionAdmin(admin.ModelAdmin):
    fields = ['pub_date','question_text']

admin.site.register(Question,QuestionAdmin)
admin.site.register(Choice)

刷新网页, 可以看到 发布日期 调整到上面了

7.2 还可以进行分类设置

python 复制代码
class QuestionAdmin(admin.ModelAdmin):
    # fields = ['pub_date','question_text']
    fieldsets = [
        ('日期', {'fields':['pub_date']}),
        ('文本', {'fields': ['question_text']}),
    ]

刷新网页

8.添加关联对象

9. 自定义列表页

在the_9\admin.py 中添加 list_display = ('pub_date','question_text')

python 复制代码
class QuestionAdmin(admin.ModelAdmin):
    # fields = ['pub_date','question_text']
    fieldsets = [
        ('日期', {'fields':['pub_date']}),
        ('文本', {'fields': ['question_text']}),
    ]
    list_display = ('pub_date','question_text')

刷新网页

相关推荐
zh15702333 分钟前
JavaScript中WorkerThreads解决服务端计算瓶颈
jvm·数据库·python
代码AI弗森36 分钟前
一文理清楚“算力申请 / 成本测算 / 并发评估”
java·服务器·数据库
^—app5668662 小时前
游戏运存小启动不起来临时解决方法
运维·服务器
摇滚侠2 小时前
expdp 查看帮助
java·数据库·oracle
流年似水~2 小时前
MCP协议实战:从零搭建一个让Claude能“看见“数据库的工具服务
数据库·人工智能·程序人生·ai·ai编程
2401_871492852 小时前
Vue.js监听器watch利用回调函数处理级联下拉框数据联动
jvm·数据库·python
志栋智能2 小时前
超自动化安全:构建智能安全运营的核心引擎
大数据·运维·服务器·数据库·安全·自动化·产品运营
zhoutongsheng3 小时前
C#怎么实现Swagger文档 C#如何在ASP.NET Core中集成Swagger自动生成API文档【框架】
jvm·数据库·python
WinterKay4 小时前
【开源】我写了一个轻量级本地数据库浏览工具,支持 MySQL/Redis 只读查询
数据库·mysql·开源
Edward111111114 小时前
4月28日防火墙问题
linux·运维·服务器