接下来就是后台管理了。
在这本书这个项目之前,我最初接触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,我也会继续学习,建立一个属于自己的电影网站!
加油吧!!!