Django实现音乐网站 ⑵

news2024/9/20 22:24:00

使用Python Django框架制作一个音乐网站,在系列文章1的基础上继续开发,本篇主要是后台歌手表模块开发。

 

目录

表结构设计

歌手表(singer)结构

创建表模型

设置图片上传路径

创建上传文件目录

生成表迁移

执行创建表

后台管理表模型

歌手表模型操作

新增

编辑、删除

优化歌手记录列表

总结


表结构设计

歌手表(singer)结构

字段

类型

注释

id

int(11)

歌手表id

name

varchar(50)

用户名

pinyin

varchar(50)

名称拼音

portrait

varchar(200)

头像链接

first_letter

varchar(15)

名称首字母

gender

tinyint(2)

性别0女 1男

birthday

varchar(20)

生日

height

int(4)

身高(cm)

weight

int(3)

体重(kg)

constellation

varchar(50)

星座

single_num

int(11)

单曲数

album_num

int(11)

专辑数

desc

text(0)

简介

addtime

int(11)

添加时间

updatetime

int(11)

编辑时间

创建表模型

在player工程目录下的models.py中创建歌手表模型。

内容如下:

from django.db import models
from datetime import date, datetime


# Create your models here.
class Singler(models.Model):
    """ 歌手表模型 """

    name = models.CharField(max_length=50, help_text='请输入歌手名称')
    first_letter = models.CharField(max_length=15, help_text='请输入歌手名称首字母')
    # 设置上传位置
    portrait = models.ImageField(upload_to='uploads/%Y%m%d%H/', help_text='请上传歌手照片')
    birthday = models.DateField(default=date.today, help_text='请选择歌手生日')
    height = models.IntegerField(help_text='请输入歌手身高(cm)', default=0, blank=True)
    weight = models.IntegerField(help_text='请输入歌手体重(kg)', default=0, blank=True)
    constellation = models.CharField(max_length=50, help_text='请输入歌手星座')
    single_num = models.IntegerField(default=0)
    album_num = models.IntegerField(default=0)
    desc = models.TextField(help_text='请输入歌手简介')
    addtime = models.DateTimeField(auto_now_add=True)
    updatetime = models.DateTimeField(auto_now=True)

设置图片上传路径

在myMusic/settings.py中最下方设置。

# 设置文件上传位置
MEDIA_ROOT = 'static/'

创建上传文件目录

在myMusic目录下创建static文件夹。

如图:

生成表迁移

python manage.py makemigrations

执行过程:

执行创建表

python manage.py migrate

创建表结构如下:

CREATE TABLE `player_singler` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `first_letter` varchar(15) NOT NULL,
  `portrait` varchar(100) NOT NULL,
  `birthday` date NOT NULL,
  `height` int(11) NOT NULL,
  `weight` int(11) NOT NULL,
  `constellation` varchar(50) NOT NULL,
  `single_num` int(11) NOT NULL,
  `album_num` int(11) NOT NULL,
  `desc` longtext NOT NULL,
  `addtime` datetime(6) NOT NULL,
  `updatetime` datetime(6) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

后台管理表模型

在player目录下admin.py中注册歌手表模型到后台。

from django.contrib import admin
from .models import Singler


# Register your models here.
class SinglerAdmin(admin.ModelAdmin):
    pass


admin.site.register(Singler, SinglerAdmin)

歌手表模型操作

新增

点击表模型旁边增加按钮,即可进入新增界面,增加一条新的歌手记录。

写完后,点击最下方的保存按钮;新增成功后,可在列表查看新增记录。

编辑、删除

通过表模型数据列表,点击进入歌手数据详情。

 歌手数据详情可编辑,也可点击下方删除按钮,删除数据。

优化歌手记录列表

修改player/admin.py。

from django.contrib import admin
from .models import Singler


# Register your models here.
class SinglerAdmin(admin.ModelAdmin):

    # 列表页属性
    def get_name(self):
        return self.name
    get_name.short_description = '歌手名称'

    def get_portrait(self):
        return self.portrait
    get_portrait.short_description = '歌手头像'

    def get_constellation(self):
        return self.constellation
    get_constellation.short_description = '星座'

    def get_height(self):
        return str(self.height) + 'cm'
    get_height.short_description = '身高'

    def get_weight(self):
        return str(self.weight) + 'kg'
    get_weight.short_description = '体重'

    def get_addtime(self):
        return self.addtime
    get_addtime.short_description = '创建时间'

    def get_updatetime(self):
        return self.updatetime
    get_updatetime.short_description = '更新时间'

    # 显示字段
    list_display = ['id', get_name, get_portrait, get_constellation, get_height, get_weight, get_addtime, get_updatetime]
    # 过滤器
    list_filter = ['name', 'constellation']
    # 搜索
    search_fields = ['name', 'constellation']
    # 分页
    list_per_page = 5


admin.site.register(Singler, SinglerAdmin)

 效果:

总结

在django中数据表到后台操作顺序为:

创建表模型->创建表迁移文件->执行表迁移->后台注册。

优化就是后台自定义管理;

比较麻烦的就是,所有表操作修改都需要创建和执行表迁移。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/820953.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp 路由跳转方式

export function goBack(index, url) {if (index 1) { // 关闭当前页,返回上一页面或多级页面。uni.navigateBack({delta: url,animationType: pop-out,animationDuration: 300});} else if (index 2) { // 保留当前页,跳转到非tabbar页面,…

GWJDN-1000B高温介电温谱分析仪

GWJDN-1000B高温介电温谱分析仪 关键词:弹性常数等C-V ,介电常数,损耗角,电导率,C-特性 产品简介 GWJDN-1000B高温介电温谱分析仪采用当前的自动平衡电桥原理研制成功的新一高温介电温谱分析仪,产品全新的电子器件。…

【TypeScript】类型断言的基本使用

类型断言的概念 有些时候开发者比TS本身更清楚当前的类型是什么&#xff0c;可以使用断言&#xff08;as&#xff09;让类型更加精确和具体。 类型断言&#xff08;Type Assertion&#xff09;表示可以用来手动指定一个值的类型。 类型断言语法&#xff1a; 值 as 类型 或 <…

Character.AI搭建了用户创建AI角色并与之聊天的平台及社区

character Character.AI 公司是一家致力于通用人工智能&#xff08;AGI&#xff09;的全栈公司&#xff0c;于2021年10月创立&#xff0c;创始团队来自Google Brain和Meta AI&#xff0c;是深度学习、大型语言模型和对话领域的专家。Character.AI搭建了用户创建AI角色并与之聊…

Patchwork 黑客组织瞄准我国大学和研究机构

据知道创宇404高级威胁情报团队近期发现&#xff0c;名为“Patchwork”的黑客组织正以中国的大学和研究机构为目标进行活动&#xff0c;部署名为EyeShell的后门。 Patchwork也被称为“Operation Hangover”和“Zinc Emerson”&#xff0c;被怀疑是来自印度的APT组织。该组织发起…

d3dcompiler_47.dll缺失如何修复,教快速修复d3dcompiler_47.dll文件

在运行某些图形密集型应用程序或游戏时&#xff0c;你可能会遇到一条关于缺少d3dcompiler_47.dll文件的错误信息。这是一个常见的问题&#xff0c;今天我们主要就是来给大家讲解一下这方面的知识的&#xff0c;教大家怎么解决缺失d3dcompiler_47.dll的情况。 一. d3dcompiler_…

前端(十一)——Vue vs. React:两大前端框架的深度对比与分析

&#x1f60a;博主&#xff1a;小猫娃来啦 &#x1f60a;文章核心&#xff1a;Vue vs. React&#xff1a;两大前端框架的深度对比与分析 文章目录 前言概述原理与设计思想算法生态系统与社区支持API与语法性能与优化开发体验与工程化对比总结结语 前言 在当今快速发展的前端领…

智能提词器有哪些?了解一下这款提词工具

智能提词器有哪些&#xff1f;使用智能提词器可以帮助你更好地准备和交付演讲、报告或其他提词场合。它可以提高你的效率&#xff0c;节省你的时间&#xff0c;并让你更加自信地与听众沟通。另外&#xff0c;智能提词器还可以提供一些有用的功能&#xff0c;如语音识别、智能建…

Jmeter用于接口测试中,关联如何实现

Jmeter用于接口测试时&#xff0c;后一个接口经常需要用到前一次接口返回的结果&#xff0c;应该如何获取前一次请求的结果值&#xff0c;应用于后一个接口呢&#xff0c;拿一个登录的例子来说明如何获取。 1、打开jmeter, 使用的3.3的版本&#xff0c;新建一个测试计划&#x…

C++和Lua交互总结

C和Lua交互总结 Chapter1. C和Lua交互总结一、Lua与C的交互机制——Lua堆栈二、堆栈的操作三、C 调用 Lua1&#xff09;C获取Lua值2&#xff09;C调用Lua函数示例&#xff1a; 四、Lua 调用 C包装C函数 最后总结一下 Chapter1. C和Lua交互总结 原文链接&#xff1a;https://bl…

无涯教程-Lua - 条件判断

if结构要求程序员确定一个或多个要由程序判断或测试的条件&#xff0c;以及要确定的条件为真的情况下要执行的一条或多条语句&#xff0c;如果条件为真&#xff0c;则执行指定语句&#xff0c;如果条件为假&#xff0c;则执行其他语句。 Lua编程语言假定布尔值 true 和 non-nil…

PHP高级检索功能的实现以及动态拼接sql

我们学习了解了这么多关于PHP的知识&#xff0c;不知道你们对PHP高级检索功能的实现以及动态拼接sql是否已经完全掌握了呢&#xff0c;如果没有&#xff0c;那就跟随本篇文章一起继续学习吧! PHP高级检索功能的实现以及动态拼接sql。完成的功能有&#xff1a;可以单独根据一个…

Python常用命令

1.python常用函数 type() 函数&#xff1a;查询对象的类型 input() 函数在&#xff1a;函数接受一个标准输入数据&#xff0c;返回为 string 类型 range() 函数&#xff1a;用于构造一个从[start, stop) &#xff08;不包含stop&#xff09;之间的连续的不可变的整数序列对象…

SpringBoot整合knife4j(快速入门超详细版)

前言 查看此文章前强烈建议先看这篇文章&#xff1a;Java江湖路 | 专栏目录 该文章纪录的是SpringBoot快速集成Knife4j&#xff0c;每一步都有记录&#xff0c;争取每一位看该文章的小伙伴都能操作成功。达到自己想要的效果~ 文章目录 前言1、什么是Knife4j2、SpringBoor整合K…

实现邮箱管理之gmail邮箱、office365(Azure)邮箱之披荆斩棘问题一览

要进行Office365邮箱的授权对接&#xff0c;你需要先申请一个应用&#xff0c;并获取授权访问令牌。 以下是一个简单的步骤&#xff1a; 登录 Azure 门户&#xff1a;https://portal.azure.com/创建一个新的应用程序&#xff0c;或者使用现有的应用程序。要创建新的应用程序&…

在人间烟火里,卡萨帝开启品牌新征程

大暑刚过天正热&#xff0c;尤其是在今年厄尔尼诺现象席卷太平洋的背景下&#xff0c;人们对空调的需求持续“升温”。CCTV2财经频道《正点财经》在专题报道中提到&#xff0c;6月国内空调产销两旺&#xff0c;同比增长均在35%以上。 炙热的天气下&#xff0c;南方居民有更加难…

PySpark 数据操作

数据输入 RDD对象 如图可见&#xff0c;PySpark支持多种数据的输入&#xff0c;在输入完成后&#xff0c;都会得到一个&#xff1a;RDD类的对象 RDD全称为&#xff1a;弹性分布式数据集&#xff08;Resilient Distributed Datasets&#xff09; PySpark针对数据的处理&…

【SAP MII学习】Day01--Overview, Security Services, and Workbench

1. Module 1: Overview 1.1 问题存在的原因 上图展示的是在工厂中IT的架构图&#xff0c;主要分为一下的三个层次&#xff1a; Shop Floor Automation and Control Systems (SFAC):collect data from the PLCs and sensors that are connected to the machinery on the facto…

vue2 ant datepicker 日期选择框 点击此刻时间多8小时不正确解决方案

点击“此刻”后&#xff0c;可以看到在DatePicker上时间是正确的 但是打印出来的dateString时间却多了8小时 原因&#xff1a; 因为点击 此刻 那个按钮时&#xff0c;moment 对象会经过 getTodayTime 设置了 utcOffset utcOffset 会把 moment 对象的 _isUTC 设为 true 并设置 _…

北漂Java程序员入职五个月的收获总结

&#x1f468;‍&#x1f4bb;博主主页&#xff1a;小尘要自信 &#x1f468;‍&#x1f4bb;本文专栏&#xff1a;Java程序员的成长 &#x1f468;‍&#x1f4bb;上一篇文章&#xff1a;告别过去&#xff0c;拥抱未来&#xff1a;一个Java开发者的成长之路 &#x1f468;‍&a…