Django建立一个音乐网站(二)

初步模板建立完成之后,就是数据的保存。数据也算是当前互联网中最热门的话题。

数据库的配置是西纳泽项目所使用的数据库的类型,不同的数据库需要设置不同的数据库引擎,Django提供4种数据库引擎。分别是:

'django.db.backends.mysql'
'django.db.backends.postgresql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'

在我看来,我觉得数据的连接和使用对程序员也是一个非常大的提升。

项目创建时默认使用Sqlite3数据库,这是一款轻型的数据库,常用于嵌入式系统开发,而且占用的资源非常多。但是django2中不再支持mysqldb作为MySQL的连接模块,而选择了mysqlclient模块

pip install mysqlclient

但是我在安装完成之后,还是有错误显示,这个时候在安装一个

pip install PyMySQL

这两个模块安装后,将MySQL开启,进行连接。

书上用5.7作为一个,我也建议使用5.7,因为在8版本的密码加密方式发生了改变。

所以8版本需要在MySQL的可视化工具中运行以下SQL语句:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
FLUSH PRIVILEGES;

之后我们下载一个navicat进行数据的管理。

建议下载navicat10版本的,网上有许多的注册码,我先贴一个我自用的,如果不行,在继续寻找

NAVN-LNXG-XHHX-5NOO

在这里插入图片描述

然后将之前DATABASE中设置的用户名和密码填入,连接就成功

首页的歌曲信息应该来自于数据库,除了Django内置的数据表之外,根据项目的数据库设计得知,网站一共定义了4张数据表,将4个数据表所对应的模型都在index的models.py中进行定义

#index的models.py
from django.db import models

#歌曲分类表label
class Label(models.Model):
    label_id = models.AutoField('序号', primary_key=True)
    label_name = models.CharField('分类标签', max_length=10)
    def __str__(self):
        #设置返回值,若不设置,则默认返回Type对象
        return self.label_name
    class Meta:
        #设置Admin界面的显示内容
        verbose_name = '歌曲分类'
        verbose_name_plural = '歌曲分类'

上面的就是一个对数据表的定义,表名就是一个类名,并且在label_id定义了主键。跟SQL语句是相似的,只不过用的语言不同而已。接着分别定义了歌曲信息表song,歌曲动态表dynamic,歌曲点评表comment。

#歌曲信息表song
class Song(models.Model):
    song_id = models.AutoField('序号', primary_key=True)
    song_name = models.CharField('歌名', max_length=50)
    song_singer = models.CharField('歌手', max_length=50)
    song_time = models.CharField('时长', max_length=10)
    song_album = models.CharField('专辑', max_length=50)
    song_languages = models.CharField('语种', max_length=20)
    song_type = models.CharField('类型', max_length=20)
    song_release = models.CharField('发行时间', max_length=20)
    song_img = models.CharField('歌曲图片', max_length=20)
    song_lyrics = models.CharField('歌词', max_length=50, default='暂无歌词')
    song_file = models.CharField('歌曲文件', max_length=50)
    label = models.ForeignKey(Label, on_delete=models.CASCADE,verbose_name='歌名分类')
    def __str__(self):
        return self.song_name
    class Meta:
        #设置Admin界面的显示内容
        verbose_name = '歌曲信息'
        verbose_name_plural = '歌曲信息'

#歌曲动态表dynamic
class Dynamic(models.Model):
    dynamic_id = models.AutoField('序号', primary_key=True)#生成默认的id字段
    song = models.ForeignKey(Song, on_delete=models.CASCADE, verbose_name='歌名')
    dynamic_plays = models.IntegerField('播放次数')
    dynamic_search = models.IntegerField('搜索次数')
    dynamic_down = models.IntegerField('下载次数')
    class Meta:
        #设置admin界面的显示内容
        verbose_name = '歌曲动态'
        verbose_name_plural = '歌曲动态'

class Comment(models.Model):
    comment_id = models.AutoField('序号', primary_key=True)
    comment_text = models.CharField('内容', max_length=500)
    comment_user = models.CharField('用户', max_length=20)
    song = models.ForeignKey(Song, on_delete=models.CASCADE,verbose_name='歌名')
    #on_delete=models.CASCADE,删除关联数据,与之关联也删除
    comment_date = models.CharField('日期', max_length=50)
    class Meta:
        verbose_name = '歌曲评论'  #verbose_name 在站点管理设置字段的显示名称
        verbose_name_plural = '歌曲评论'

一些django定义的说明

AutoField:只是为模型创建一个自增长的字段,所做的仅仅是创建。自增的工作由所使用的数据库完成。

CharField:只是字符串类型

ForeignKey:类似SQL中的外键,在某类名中使用,作为另一类名的外键

只要了解SQL,并且有了一定的SQL语法,这些理解起来比较容易的

定义完成之后,再次到Pycharm中的Terminal输入数据迁移指令:

F:\music>python manage.py makemigrations
Migrations for 'index':
	index\migrations\0001_initial.py
	...
	
F:\music>python manage.py migrate

之后打开navicat,可以看到建立了许多表

在这里插入图片描述

点开表之后,我们可以进行导入数据等一些列操作。接下来就是对站点进行装饰。

源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值