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

本文介绍如何使用Django框架搭建后台管理系统,包括模型设置、自定义显示字段、搜索和过滤等功能,以及用户权限管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接下来就是后台管理了。

在这本书这个项目之前,我最初接触python看的是《python基础教程—从实践到入门》,这本后面讲解了django,而且这里面讲解是从admin开始。如果有兴趣了解的可以看看书或者从网上寻找资料,但是django版本不是很高,看起来可能让人容易懵

后台管理是管理员对用户数据进行管理的存在。在这之中也可以对用户进行权限的赋予(知道为啥VIP牛X了吧)。

登陆后台管理操作

python manage.py runserver
#启动之后,在浏览器输入栏输入
127.0.0.1:8000/admin
即可进入

在整个网站中,index和user算两个app所以分别定义模型,因此在Admin后台系统是区分两个模块的

#index的__init__.py

#对功能模块进行命名
from django.apps import AppConfig
import os
#修改App在Admin后台显示的名称
#default_app_config的值来自apps.py的类名
default_app_config = 'index.IndexConfig'

#获取当前App的命名
def get_cuurrent_app_name(_file):
    return os.path.split(os.path.dirname(_file))[-1]

#重写类IndexConfig
class IndexConfig(AppConfig):
    name = get_cuurrent_app_name(__file__)
    verbose_name = '网站首页'
    
------------------------------------------------------------------------------------------------    
#index的admin.py

from django.contrib import admin
from .models import *

#修改title和header

admin.site.site_title = '我的音乐后台管理系统'
admin.site.site_header = '我的音乐'

#模型Label
@admin.register(Label)
class LabelAdmin(admin.ModelAdmin):
    #设置模型字段,用于Admin后台数据的表头设置
    list_display = ['label_id', 'label_name']
    #设置可搜索的字段并在Admin后台数据生成搜索框,如有外键应使用双下画线链接两个模型的字段
    search_fields = ['label_name']
    #设置排序方式
    ordering = ['label_id']

#模型Song
@admin.register(Song)
class SongAdmin(admin.ModelAdmin):
    list_display = ['song_id','song_name','song_singer','song_album','song_languages','song_release']
    search_fields = ['song_name','song_singer','song_album','song_languages']
    #设置过滤器,在后台数据的右侧生成导航栏,如有外键应使用双下画线连接两个模型的字段
    list_filter = ['song_singer','song_album','song_languages']
    ordering = ['song_id']

#模型Dynamic
@admin.register(Dynamic)
class DynamicAdmin(admin.ModelAdmin):
    list_display = ['dynamic_id','song','dynamic_plays','dynamic_search','dynamic_down']
    search_fields = ['song']
    list_filter = ['dynamic_plays','dynamic_search','dynamic_down']
    ordering = ['dynamic_id']

#模型Comment
@admin.register(Comment)
class CommentAdmin(admin.ModelAdmin):
    list_display = ['comment_id','comment_text','comment_user','song','comment_date']
    search_fields = ['comment_user','song','comment_date']
    list_filter = ['song','comment_date']
    ordering = ['comment_id']

接下来就是user这个app的一些设置,与上面大同小异

#user的__init__.py

from django.apps import AppConfig
import os

default_app_config = 'user.IndexConfig'

#获取当前App的命名
def get_current_app_name(_file):
    return os.path.split(os.path.dirname(_file))[-1]

#重写类IndexConfig
class IndexConfig(AppConfig):
    name = get_current_app_name(__file__)
    verbose_name = '用户管理'


------------------------------------------------------------------------------------------------
#user的admin.py
from django.contrib import admin
from .models import MyUser
from django.contrib.auth.admin import UserAdmin
from django.utils.translation import gettext_lazy as _
@admin.register(MyUser)
class MyUserAdmin(UserAdmin):
    list_display = ['username','email','mobile','qq','weChat']
    #在用户信息界面添加’mobile‘,'qq','weChat'的信息输入框
    #将源码的UserAdmin.filesets转换成列表格式
    fieldsets = list(UserAdmin.fieldsets)
    #重写UserAdmin的fieldsets,添加'mobile','qq','weChat'的信息录入
    fieldsets[1] = (_('Personal info'),
                    {'fields':('first_name','last_name','email','mobile','qq','weChat')})
    
    
    #设置fieldsets 控制管理“添加”和 “更改” 页面的布局.
	#fieldsets 是一个以二元元组为元素的列表, 每一个二元元组代表一个在管理表单二元元组的格式是 (name, field_options), 其中 name 是一个字符串相当于 fieldset的标题, field_options 是一个关于 fieldset的字典信息,一个字段列表包含在里面。


当网页遇到错误时,往往我们会返回404,这时候我们在网页中也可以设置一下

#music的urls.py
#设置404、500错误状态码
from index import views
handler404 = views.page_not_found
handler500 = views.page_not_found

#index的views.py
def page_not_found(request):
    return render(request, 'error404.html', status = 404)

到这块基本网站的建立就完成了,这时候可以在后台进行对用户设置权限,可以更换音乐和照片素材,也可以进行新的数据库数据添加,但是要考虑到数据改变是否影响到html的设置。这个由个人随机操作。

最后重头戏就是项目上线部署了,一般采用django+nginx+uWSGI这样。我利用虚拟机进行了多次部署…期间废掉了好几个VM…目前还没成功,等我成功之后将继续写博客分享经验。

根据书上的内容进行了操作对django框架有了一个简单的认识,我还是打算在此立个flag,我也会继续学习,建立一个属于自己的电影网站!

加油吧!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值