博主介紹:?從事軟件開發10年之余,專注于Java技術領域、Python、大數據、人工智能及數據挖掘、小程序項目開發和Android項目開發等。CSDN、掘金、華為云、InfoQ、阿里云等平臺優質作者?
🍅文末獲取源碼聯系🍅
👇🏻 精彩專欄推薦訂閱👇🏻 不然下次找不到喲
————————————————
計算機畢業設計《1000套》?Python畢設精品項目?
微信小程序畢設精品項目?
大數據及機器學習畢設精品項目?
PS:Java、Python、大數據、機器學習等,可以用源碼,或者定制開發!
目錄
1、項目介紹及開發技術?
1.1 項目介紹
1.2 開發技術
2、系統功能設計結構圖
3、功能截圖?
3.1 前臺功能
3.2 后臺功能
4、關鍵代碼?
4.1 setting.py
4.2 urls.py
4.3?config_v.py
4.4 yonghu_v.py
5、論文目錄結構?
6、源碼獲取?
1、項目介紹及開發技術?
1.1 項目介紹
? ? ? 隨著大數據時代的到來,數據分析和可視化成為了洞察業務趨勢、提升決策質量的關鍵手段。B站數據分析可視化系統應運而生,旨在通過對海量數據的采集、處理、分析和展示,為業務決策提供強有力的數據支持。該系統采用Python語言進行開發,利用其強大的數據處理能力和豐富的庫支持,實現數據的高效分析。Scrapy技術的應用使得系統能夠快速爬取B站的公開數據,為分析提供原始素材。看板可視化技術則將分析結果以直觀、易理解的方式呈現給用戶,提升信息傳遞的效率。預測功能通過構建數據模型,對B站的未來趨勢進行預測,為戰略規劃提供依據。Hadoop框架的應用解決了大數據環境下的存儲和計算問題,保障了系統的可擴展性。Django框架的使用簡化了Web應用的開發,使得系統功能更加豐富、穩定。MySQL數據庫作為數據存儲的核心,以其可靠性和易用性,為平臺提供了強大的數據支持。B站數據分析可視化系統的建設和應用,不僅提高了數據分析的效率和質量,也為業務創新和發展提供了新的動力,推動了數據分析技術在視頻平臺領域的應用和發展。
1.2 開發技術
? ? ? 該系統旨在對B站數據進行分析和可視化展示。通過爬蟲技術爬取B站的相關數據,利用Hadoop進行數據存儲和處理,使用Python和Django框架搭建后端服務,對數據進行清洗、分析和處理。前端使用Vue技術構建用戶界面,將分析結果以直觀的圖表、報表等形式展示給用戶,方便用戶了解B站的熱門視頻、用戶行為等信息。?
序號 | 技術名稱 | 類型 | 版本/備注 | 用途描述 |
---|---|---|---|---|
1 | Python | 編程語言 | Python 3.7.7 | 廣泛用于Web開發、數據科學、AI等領域 |
2 | Django | Web框架 | Django2.0 | 高級Web框架,用于快速開發Web應用 |
3 | Flask | Web框架 | Flask2.0.0 | 輕量級Web框架,適合小型項目 |
4 | Scrapy | 爬蟲框架 | Scrapy2.9.0 | 用于編寫爬蟲程序,快速抓取網頁數據 |
5 | Hadoop | 大數據處理 | 分布式存儲和計算框架,適合大數據存儲和處理 | |
6 | Spark | 大數據處理 | pyspark3.3.2 | 快速、通用的集群計算系統 |
7 | MySQL | 數據庫 | MySQL5.7+ | 關系型數據庫,用于存儲和管理數據 |
8 | Navicat | 數據庫管理工具 | Navicat11+ | 數據庫管理和開發工具,支持多種數據庫 |
9 | DataGrip | 數據庫管理工具 | 強大的數據庫管理工具,支持多種數據庫 | |
10 | PyCharm | 開發環境 | Pycharm2021 | Python IDE,提供代碼編輯、調試等功能 |
11 | VSCode | 開發環境 | VSCode1.15.1 | 輕量級但功能強大的代碼編輯器 |
12 | Node.js | 服務器端JS環境 | Node 14.15.0 | 用于構建高性能的服務器端和網絡應用 |
2、系統功能設計結構圖
? ? ? B站數據分析可視化系統將集成多種功能以提升數據分析的效率和可視化效果,進而優化用戶體驗和決策過程。系統將圍繞用戶分析、熱門視頻分析、熱門視頻預測、輪播圖管理和個人中心等核心功能展開。用戶分析功能將對B站用戶的行為數據進行深入挖掘,包括用戶活躍度、偏好內容、互動行為等,為平臺運營提供用戶畫像和行為趨勢。熱門視頻分析功能將聚焦于識別和分析平臺上受歡迎的視頻內容,包括視頻觀看次數、彈幕互動、分享傳播等指標,以揭示熱門視頻的特征和影響因素。熱門視頻預測功能將運用機器學習算法對視頻內容和用戶行為進行建模,預測潛在的熱門視頻,為內容創作者和平臺運營提供指導。輪播圖管理功能將允許管理員方便地管理和更新首頁的輪播圖內容,以展示重要信息和推薦視頻,提升用戶的點擊率和參與度。個人中心功能則為用戶提供個人信息管理、觀看歷史、收藏列表等個性化服務,增強用戶的歸屬感和忠誠度。通過整合這些功能,B站數據分析可視化系統將為平臺運營者、內容創作者和普通用戶提供全面、直觀的數據支持和決策依據,推動B站內容生態的健康發展。該系統也將為數據分析和可視化技術在視頻平臺的應用提供實踐案例和經驗積累。系統總體功能模塊圖如下圖所示:
圖2-1 系統總體結構圖
架構圖(不同框架)參考展示:?
?
3、功能截圖?
3.1 前臺功能
? ? ? 系統前臺首頁精心設計,以提升用戶體驗。“熱門視頻”功能展示當前最受歡迎的內容,吸引用戶關注和參與,增加平臺互動。用戶可以通過這一板塊迅速了解流行趨勢和社區熱點。“個人中心”則是用戶管理個人信息的專屬區域,用戶可以在這里查看個人資料、歷史記錄、收藏內容以及設置偏好,實現個性化定制。這些功能的結合,旨在為用戶提供一個直觀、便捷的操作平臺,增強用戶粘性。系統首頁界面如圖5-1所示:?
圖3-1 系統首頁界面
? ? ? 用戶在點擊“熱門視頻”界面后,將看到當前平臺上最受歡迎的視頻列表。用戶可以根據自己的興趣選擇視頻進行觀看。觀看過程中,用戶有權利對視頻內容進行評論,分享自己的看法和感受,與其他用戶互動交流。如果用戶對某個視頻特別感興趣,還可以選擇將其收藏到個人中心,方便日后快速訪問和再次觀看。這些功能不僅增加了用戶的參與度,也提升了平臺的互動性和用戶粘性。熱門視頻界面如圖3-2所示:?
圖3-2熱門視頻界面
? ? ?在個人中心頁面,用戶可以執行多項與個人信息管理相關的操作。用戶能夠查看和更新個人資料,確保賬戶信息的準確性。修改密碼功能允許用戶定期更新登錄憑據,以增強賬戶安全性。此外,“我的收藏”功能讓用戶能夠訪問和管理自己收藏的視頻列表,輕松找到之前感興趣的內容。這些功能共同為用戶提供了一個集中的平臺,以便高效地管理自己的在線活動和偏好設置。如圖3-3所示:
圖3-3個人中心界面
? ? ? ?用戶在個人中心界面點擊“我的收藏”功能后,可以通過輸入視頻名稱進行快速查詢,系統將展示用戶收藏的視頻列表。用戶可以方便地查看自己感興趣的視頻內容,包括之前收藏的各種熱門或感興趣的視頻。這一功能使用戶能夠輕松管理和回顧個人收藏,快速訪問喜愛的視頻,提升用戶體驗。它也便于用戶整理和追蹤自己的興趣點,確保不會錯過任何想要再次觀看的視頻。我的收藏界面如圖3-4所示:
圖3-4我的收藏界面
3.2 后臺功能
? ? ? ?后臺管理員登錄功能是系統管理的重要入口。管理員通過輸入用戶名和密碼進行身份驗證,確保只有授權人員才能訪問系統后臺。登錄界面通常包含用戶名和密碼輸入框,以及登錄按鈕。管理員成功登錄后,將進入管理界面,擁有對用戶管理、內容審核、數據分析等各項功能的訪問權限。這一功能通過權限控制,保障了系統數據的安全性和操作的準確性,為高效管理提供了基礎。管理員登錄界面如圖3-5所示:
圖3-5 管理員登錄界面
? ? ? ?管理員主頁面作為系統控制中心,提供全面的管理功能。頁面通常詳細列出所有管理模塊,包括用戶、熱門視頻、熱門視頻預測、輪播圖管理、個人中心等,確保管理員能夠高效地進行日常管理工作。整個頁面布局清晰,功能模塊化,便于管理員快速定位和操作。管理員主界面如圖3-6所示:
圖3-6管理員主界面
管理員在系統中通過點擊“用戶”功能,能夠輸入用戶賬號進行精確查詢,快速定位特定用戶信息。系統展示匹配的用戶列表后,管理員可以添加新用戶信息或從列表中刪除不再需要的用戶,維護用戶數據的準確性。管理員還可以查看用戶的詳細信息,進行必要的信息修改,如更新用戶資料或權限設置。在必要時,管理員也可以執行刪除操作,以確保系統中用戶信息的及時更新和平臺的安全運行。用戶界面如圖3-7所示:
圖3-7用戶界面
? ? ? ?管理員在系統中點擊“熱門視頻”功能,可以通過輸入視頻標題、UP主、類型等關鍵詞進行查詢,快速定位特定視頻。管理員能夠添加新的熱門視頻到列表中,或從列表中刪除不再受歡迎的視頻。管理員還可以爬取視頻數據,包括時長、播放量、彈幕量、點贊量、收藏量、分享量、投幣量等關鍵指標,并根據UP主類型、視頻類型等分類進行管理。管理員可以查看視頻的詳細信息,進行必要的信息修改,如更新視頻描述或標簽。在必要時,管理員也可以刪除不當或過時的視頻內容,以維護平臺內容的質量和秩序。熱門視頻界面如圖3-8所示:
圖3-8熱門視頻界面
? ? ? 管理員在系統中點擊“熱門視頻預測”功能后,可以通過輸入視頻標題進行查詢,系統將展示相關的預測信息列表。管理員能夠根據平臺的算法模型添加新的預測條目,或從列表中刪除不再適用的預測。管理員還可以查看每條預測的詳細信息,進行必要的信息修改,如調整預測參數或更新預測結果。管理員還可以利用系統提供的預測工具,對潛在熱門視頻進行分析和預測,以優化內容推薦策略。在必要時,管理員也可以執行刪除操作,確保預測信息的準確性和時效性。熱門視頻預測界面如圖3-9所示:
圖3-9熱門視頻預測界面
? ? ? 管理員點擊“看板”功能后,將進入一個數據可視化界面,該界面集中展示了平臺的關鍵統計數據。看板通過圖表和圖形直觀地呈現用戶總數、熱門視頻數量、預測的熱門視頻數量等核心指標。它還詳細列出了視頻點贊量、播放量、彈幕量等互動數據,以及UP主類型和視頻類型等分類信息。這些數據幫助管理員快速把握平臺的運營狀況和用戶行為特征。看板中的“預測播放量”功能尤為關鍵,它利用歷史數據和算法模型預測視頻的潛在播放量,為內容推薦和運營決策提供數據支持。這一功能不僅提升了內容管理的前瞻性,也為平臺優化資源分配和提升用戶體驗提供了科學依據。看板界面如圖3-10所示:
圖3-10看板界面
4、關鍵代碼?
4.1 setting.py
"""
Django settings for dj2 project.Generated by 'django-admin startproject' using Django 2.0.For more information on this file, see
https://docs.djangoproject.com/en/2.0/topics/settings/For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.0/ref/settings/
"""import os
from concurrent.futures.thread import ThreadPoolExecutor
executor = ThreadPoolExecutor(20)
from util.configread import config_read# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'w5yn#0gn2tt7pvu%hvwt0!lt=!$6+eqp4%m8)u3u#gknm@jm)k'# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = TrueALLOWED_HOSTS = ["*"]# Application definitionINSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',"main",'corsheaders',
]MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',# 'django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','threadlocals.middleware.ThreadLocalMiddleware',"xmiddleware.xparam.Xparam","xmiddleware.xauth.Xauth",'corsheaders.middleware.CorsMiddleware','django.middleware.common.CommonMiddleware',
]
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_HEADERS = ('*')SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_COOKIE_NAME = "sessionid"
SESSION_COOKIE_PATH = "/"
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_SECURE = False
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_AGE = 1209600
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_SAVE_EVERY_REQUEST = FalseROOT_URLCONF = 'dj2.urls'
TEMPLATES_DIR = os.path.join(BASE_DIR, "templates")
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [TEMPLATES_DIR],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]WSGI_APPLICATION = 'dj2.wsgi.application'EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = False
EMAIL_USE_SSL = True
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = 'yclw9@qq.com'
EMAIL_HOST_PASSWORD = 'mhbrkuayvkkgbijd'# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# }dbtype, host, port, user, passwd, dbName, charset,hasHadoop = config_read("config.ini")
dbName=dbName.replace(" ","").strip()
print(dbtype, host, port, user, passwd, dbName, charset)if dbtype == 'mysql':DATABASES = {'default': {# 'ENGINE': 'django.db.backends.sqlite3',# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),'ENGINE': 'django.db.backends.mysql','OPTIONS': {'sql_mode': 'traditional','init_command': "SET sql_mode='traditional'", # STRICT_TRANS_TABLES},'NAME': dbName,'USER': user,'PASSWORD': passwd,'HOST': host,'PORT': port,'charset': charset,'TEST': {'CHARSET': charset,'COLLATION': 'utf8_general_ci',},'CONN_MAX_AGE':60},}
else:print("請使用mysql5.5數據庫")os._exit(1)if 'spark' in hasHadoop or 'hive' in hasHadoop:jar_fielpath=os.path.join(BASE_DIR,"bin","mysql-connector-java-8.0.32.jar")print(jar_fielpath)if os.path.exists(jar_fielpath)==False:print('請檢查mysql-connector-java-8.0.32.jar文件是否存在')os._exit(1)try:spark = SparkSession.builder.config("spark.jars",jar_fielpath).master("local").appName("django").getOrCreate()except Exception as e:print('請檢查spark配置',e)os._exit(1)jdbc_url=f'jdbc:mysql://{host}:{port}/{dbName}?user={user}&password={passwd}&driver=com.mysql.jdbc.Driver'# Password validation
# https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validatorsAUTH_PASSWORD_VALIDATORS = [{'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',},{'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',},{'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',},{'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',},
]# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/LANGUAGE_CODE = 'zh-Hans'# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'USE_I18N = TrueUSE_L10N = True# USE_TZ = True
USE_TZ = False# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/STATIC_URL = '/assets/'
STATICFILES_DIRS =[
os.path.join(BASE_DIR, "templates/front/assets"),
]# media
MEDIA_URL = "/media/" # 自定義
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 自定義
if os.path.isdir(MEDIA_ROOT) == False:os.mkdir(MEDIA_ROOT)ALIPAY_APP_ID = ''
APP_PRIVATE_KEY_STRING = open('{}/util/alipay_key/app_private_2048.txt'.format(BASE_DIR)).read()
ALIPAY_PUBLIC_KEY_STRING = open('{}/util/alipay_key/alipay_public_2048.txt'.format(BASE_DIR)).read()
ALIPAY_SIGN_TYPE = 'RSA2'
4.2 urls.py
"""dj2 URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/2.0/topics/http/urls/
Examples:
Function views1. Add an import: from my_app import views2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views1. Add an import: from other_app.views import Home2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
import os
from django.contrib import admin
from django.urls import path,include,re_path
from django.conf.urls import url
from django.views.static import serve
from django.views.generic import TemplateViewfrom . import views
from dj2.settings import dbName as schemaNameurlpatterns = [path('xadmin/', admin.site.urls),path(r'index/',views.index),path('{}/'.format(schemaName),include('main.urls')),#導入schemaNamere_path(r'admin/lib/(?P<p1>.*)/(?P<p2>.*)$', views.admin_lib2),re_path(r'admin/lib/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$', views.admin_lib3),re_path(r'admin/lib/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$', views.admin_lib4),re_path(r'admin/page/(?P<p1>.*)$', views.admin_page),re_path(r'admin/page/(?P<p1>.*)/(?P<p2>.*)$', views.admin_page2),re_path(r'admin/pages/(?P<p1>.*)$', views.admin_pages),re_path(r'admin/pages/(?P<p1>.*)/(?P<p2>.*)$', views.admin_pages2),re_path(r'front/(?P<p1>.*)$', views.schema_front1),re_path(r'front/(?P<p1>.*)/(?P<p2>.*)$', views.schema_front2),re_path(r'front/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$', views.schema_front3),re_path(r'front/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$', views.schema_front4),re_path(r'{}/front/(?P<p1>.*)$'.format(schemaName), views.schema_front1),re_path(r'{}/front/(?P<p1>.*)/(?P<p2>.*)$'.format(schemaName), views.schema_front2),re_path(r'{}/front/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$'.format(schemaName), views.schema_front3),re_path(r'{}/front/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$'.format(schemaName), views.schema_front4),# re_path(r'assets/(?P<p1>.*)$', views.assets1),# re_path(r'assets/(?P<p1>.*)/(?P<p2>.*)$', views.assets2),# re_path(r'assets/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$', views.assets3),# re_path(r'assets/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$', views.assets4),#re_path(r'admin/(?P<p1>.*)$', views.admin_file1),re_path(r'admin/(?P<p1>.*)/(?P<p2>.*)$', views.admin_file2),re_path(r'admin/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$', views.admin_file3),re_path(r'admin/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$', views.admin_file4),re_path(r'layui/(?P<p1>.*)$', views.layui1),re_path(r'layui/(?P<p1>.*)/(?P<p2>.*)$', views.layui2),re_path(r'layui/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$', views.layui3),re_path(r'layui/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$', views.layui4),re_path(r'pages/(?P<p1>.*)$', views.front_pages),re_path(r'pages/(?P<p1>.*)/(?P<p2>.*)$', views.front_pages2),# re_path(r'pages/(?P<p1>.*)$', views.front_file1),# re_path(r'(?P<p1>css|jss|img|image|iamges|font|fonts)/(?P<p2>.*)$', views.front_file2),re_path(r'modules/(?P<p1>.*)$', views.front_modules),re_path(r'css/(?P<p1>.*)$', views.css1),re_path(r'js/(?P<p1>.*)$', views.js1),re_path(r'img/(?P<p1>.*)$', views.img1),path(r'test/<str:p1>/',views.test),path(r'null',views.null),
]#判斷admin使用vue還是jquery
if os.path.isdir(os.path.join(os.getcwd(),"templates/front/admin/dist/")):urlpatterns.extend([path(r'{}/admin/dist/index.html'.format(schemaName),TemplateView.as_view(template_name='front/admin/dist/index.html')),path(r'{}/admin/'.format(schemaName), TemplateView.as_view(template_name='front/admin/dist/index.html')),# 以下是后臺admin的url匹配規則path(r'admin/dist/index.html'.format(schemaName),TemplateView.as_view(template_name='front/admin/dist/index.html')),path(r'admin/', TemplateView.as_view(template_name='front/admin/dist/index.html')),])
else:urlpatterns.extend([path(r'{}/admin/index.html'.format(schemaName),TemplateView.as_view(template_name='front/admin/index.html')),path(r'{}/admin/'.format(schemaName), TemplateView.as_view(template_name='front/admin/index.html')),# 以下是后臺admin的url匹配規則path(r'admin/index.html'.format(schemaName),TemplateView.as_view(template_name='front/admin/index.html')),path(r'admin/', TemplateView.as_view(template_name='front/admin/index.html')),])if os.path.isfile(os.path.join(os.getcwd(),"templates/front/index.html")):urlpatterns.extend([path(r'index.html', TemplateView.as_view(template_name='front/index.html')),path(r'{}/index.html'.format(schemaName), TemplateView.as_view(template_name='front/index.html')),path(r'{}/front/index.html'.format(schemaName), TemplateView.as_view(template_name='front/index.html')),path(r'', TemplateView.as_view(template_name='front/index.html')),])
4.3?config_v.py
# coding:utf-8import loggingfrom django.http import JsonResponsefrom .config_model import config
from util.codes import *
from util import message as mesdef config_page(request):'''獲取參數信息:return:'''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code,"data": {"currPage": 1, "totalPage": 1, "total": 1, "pageSize": 10, "list": []}}req_dict = request.session.get('req_dict')msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \msg['data']['pageSize'] = config.page(config, config, req_dict)return JsonResponse(msg)def config_list(request):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code,"data": {"currPage": 1, "totalPage": 1, "total": 1, "pageSize": 10, "list": []}}req_dict = request.session.get("req_dict")msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \msg['data']['pageSize'] = config.page(config, config, req_dict)return JsonResponse(msg)def config_info(request, id_):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}data = config.getbyid(config, config, int(id_))if len(data) > 0:msg['data'] = data[0]return JsonResponse(msg)def config_detail(request, id_):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}data = config.getbyid(config, config, int(id_))if len(data) > 0:msg['data'] = data[0]return JsonResponse(msg)def config_save(request):'''創建參數信息:return:'''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}req_dict = request.session.get('req_dict')param1 = config.getbyparams(config, config, req_dict)if param1:msg['code'] = id_exist_codemsg['msg'] = mes.id_exist_codereturn JsonResponse(msg)error = config.createbyreq(config, config, req_dict)logging.warning("save_config.res=========>{}".format(error))if error != None:msg['code'] = crud_error_codemsg['msg'] = errorreturn JsonResponse(msg)def config_add(request):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}req_dict = request.session.get("req_dict")error = config.createbyreq(config, config, req_dict)if error != None:msg['code'] = crud_error_codemsg['msg'] = errorreturn JsonResponse(msg)def config_update(request):'''更新參數信息:return:'''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}req_dict = request.session.get('req_dict')config.updatebyparams(config, config, req_dict)return JsonResponse(msg)def config_delete(request):'''刪除參數信息:return:'''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}req_dict = request.session.get('req_dict')config.deletes(config,config,req_dict.get("ids"))return JsonResponse(msg)
4.4 yonghu_v.py
def yonghu_register(request):if request.method in ["POST", "GET"]:msg = {'code': normal_code, "msg": mes.normal_code}req_dict = request.session.get("req_dict")error = yonghu.createbyreq(yonghu, yonghu, req_dict)if error is Exception or (type(error) is str and "Exception" in error):msg['code'] = crud_error_codemsg['msg'] = "用戶已存在,請勿重復注冊!"else:msg['data'] = errorreturn JsonResponse(msg, encoder=CustomJsonEncoder)def yonghu_login(request):if request.method in ["POST", "GET"]:msg = {'code': normal_code, "msg": mes.normal_code}req_dict = request.session.get("req_dict")datas = yonghu.getbyparams(yonghu, yonghu, req_dict)if not datas:msg['code'] = password_error_codemsg['msg'] = mes.password_error_codereturn JsonResponse(msg, encoder=CustomJsonEncoder)try:__sfsh__= yonghu.__sfsh__except:__sfsh__=Noneif __sfsh__=='是':if datas[0].get('sfsh')!='是':msg['code']=other_codemsg['msg'] = "賬號已鎖定,請聯系管理員審核!"return JsonResponse(msg, encoder=CustomJsonEncoder)req_dict['id'] = datas[0].get('id')return Auth.authenticate(Auth, yonghu, req_dict)def yonghu_logout(request):if request.method in ["POST", "GET"]:msg = {"msg": "登出成功","code": 0}return JsonResponse(msg, encoder=CustomJsonEncoder)def yonghu_resetPass(request):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code}req_dict = request.session.get("req_dict")columns= yonghu.getallcolumn( yonghu, yonghu)try:__loginUserColumn__= yonghu.__loginUserColumn__except:__loginUserColumn__=Noneusername=req_dict.get(list(req_dict.keys())[0])if __loginUserColumn__:username_str=__loginUserColumn__else:username_str=usernameif 'mima' in columns:password_str='mima'else:password_str='password'init_pwd = '123456'recordsParam = {}recordsParam[username_str] = req_dict.get("username")records=yonghu.getbyparams(yonghu, yonghu, recordsParam)if len(records)<1:msg['code'] = 400msg['msg'] = '用戶不存在'return JsonResponse(msg, encoder=CustomJsonEncoder)eval('''yonghu.objects.filter({}='{}').update({}='{}')'''.format(username_str,username,password_str,init_pwd))return JsonResponse(msg, encoder=CustomJsonEncoder)
def yonghu_page(request):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data":{"currPage":1,"totalPage":1,"total":1,"pageSize":10,"list":[]}}req_dict = request.session.get("req_dict")global yonghu#當前登錄用戶信息tablename = request.session.get("tablename")msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \msg['data']['pageSize'] =yonghu.page(yonghu, yonghu, req_dict, request)return JsonResponse(msg, encoder=CustomJsonEncoder)
5、論文目錄結構?
第一章 概述?? ?1
1.1 課題背景與意義?? ?1
1.2 國內外研究現狀?? ?1
1.3 本課題研究的主要內容?? ?2
第二章 開發工具及技術介紹?? ?3
2.1 Django框架?? ?3
2.2 Python語言?? ?3
2.3 vue.js前端框架?? ?3
2.4 MySQL數據庫?? ?3
2.5 B/S架構?? ?3
2.6 Scrapy技術?? ?4
2.7 Hadoop框架?? ?4
第三章 系統分析?? ?1
3.1系統性能分析?? ?1
3.2系統可行性分析?? ?1
3.3 系統用例分析?? ?2
3.4系統流程分析?? ?2
3.4.1 登錄流程圖?? ?2
3.4.2 添加新用戶流程圖?? ?3
第四章 系統概要設計?? ?5
4.1系統設計原理?? ?5
4.2功能模塊設計?? ?5
4.3 數據庫設計?? ?6
4.3.1數據庫設計原則?? ?6
4.3.2數據庫E-R圖設計?? ?6
4.3.3數據庫表結構設計?? ?8
第五章 系統功能實現?? ?12
5.1前臺功能實現?? ?12
5.1.1系統首頁頁面?? ?12
5.1.2個人中心?? ?13
5.2管理員功能實現?? ?14
第六章 系統測試?? ?18
6.1系統測試的目的?? ?18
6.2系統測試方法?? ?18
6.3系統測試用例?? ?18
結 ? ?論?? ?20
致 ?謝?? ?21
參考文獻?? ?22
?更多源碼:
計算機畢業設計選題1000套等你來!!!
Python畢設精品項目
微信小程序畢設精品項目??
大數據及機器學習畢設精品項目?
6、源碼獲取?
感謝大家的閱讀,如有不懂的問題可以評論區交流或私聊!
喜歡文章可以點贊、收藏、關注、評論啦
→下方聯系方式掃描獲取源碼←