Django建立一個音樂網站(五)

接下來就是後臺管理了。

在這本書這個項目之前,我最初接觸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,我也會繼續學習,建立一個屬於自己的電影網站!

加油吧!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章