計算機畢業設計 基于Hadoop的B站數據分析可視化系統的設計與實現 Python 大數據畢業設計 Hadoop畢業設計選題【附源碼+文檔報告+安裝調試】

博主介紹:?從事軟件開發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站的熱門視頻、用戶行為等信息。?

序號技術名稱類型版本/備注用途描述
1Python編程語言Python 3.7.7廣泛用于Web開發、數據科學、AI等領域
2DjangoWeb框架Django2.0高級Web框架,用于快速開發Web應用
3FlaskWeb框架Flask2.0.0輕量級Web框架,適合小型項目
4Scrapy爬蟲框架Scrapy2.9.0用于編寫爬蟲程序,快速抓取網頁數據
5Hadoop大數據處理分布式存儲和計算框架,適合大數據存儲和處理
6Spark大數據處理pyspark3.3.2快速、通用的集群計算系統
7MySQL數據庫MySQL5.7+關系型數據庫,用于存儲和管理數據
8Navicat數據庫管理工具Navicat11+數據庫管理和開發工具,支持多種數據庫
9DataGrip數據庫管理工具強大的數據庫管理工具,支持多種數據庫
10PyCharm開發環境Pycharm2021Python IDE,提供代碼編輯、調試等功能
11VSCode開發環境VSCode1.15.1輕量級但功能強大的代碼編輯器
12Node.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、源碼獲取?

感謝大家的閱讀,如有不懂的問題可以評論區交流或私聊!

喜歡文章可以點贊、收藏、關注、評論

下方聯系方式掃描獲取源碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/98842.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/98842.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/98842.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用自定義LLM和Embedding模型部署Vanna:基于RAG的Text-to-SQL生成

使用自定義LLM和Embedding模型部署Vanna&#xff1a;基于RAG的Text-to-SQL生成 說明&#xff1a; 首次發表日期&#xff1a;2024-07-12Vanna Github地址&#xff1a; https://github.com/vanna-ai/vannaVanna官方文檔&#xff1a; https://vanna.ai/ 部署Vanna時我們可以選擇使…

Linux多線程概念

背景知識內存管理OS進行內存管理不是以字節為單位的&#xff0c;而是以內存塊為單位的&#xff0c;默認大小為4kb&#xff1b;系統和磁盤文件進行IO交互的單位是4kb&#xff08;8個扇區&#xff09;&#xff1b;OS對內存管理實質上是對頁框進行管理。頁框&#xff08;Page Fram…

【Problem】動態規劃之跳躍游戲系列

一、跳躍游戲 55. 跳躍游戲 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/jump-game/description/?envTypeproblem-list-v2&envIddynamic-programming class Solution { public:bool canJump(vector<int>& nums) {// 狀態定義&#x…

射頻EVM

EVM&#xff08;Error Vector Magnitude&#xff0c;誤差矢量幅度&#xff09;是衡量無線通信系統中調制質量的重要指標&#xff0c;尤其用于評估信號的調制誤差和系統性能。它通常用來表示傳輸信號與理想信號之間的偏差&#xff0c;特別是在數字通信中。EVM的基本概念&#xf…

Java 更改 Word 文檔中文本顏色

在日常的自動化文檔處理中&#xff0c;我們經常會遇到需要對 Word 文檔內容進行編程修改的需求&#xff0c;其中一項常見且重要的操作就是更改文本的顏色。無論是為了突出重點、統一品牌風格&#xff0c;還是實現動態內容展示&#xff0c;精準地修改文本顏色都是一個核心痛點。…

STM32—SPI協議

文章目錄一、SPI 協議簡介二、硬件電路2.1.SPI的連接2.2.數據的移位2.3.時序基本單元2.3.1.起始條件和終止條件2.3.2.模式 02.3.3.模式 12.3.4.模式 22.3.5.模式 32.4.時序三、軟件實現四、W25Q644.1.簡介4.2.硬件電路4.3.框圖4.4.操作注意事項五、實驗一、SPI 協議簡介 SPI&a…

Qt中的QWebEngineView

第1章 本地目錄結構1.1 自己寫的兩個網頁(html)mermaid.html &#xff08;自己寫的網頁界面&#xff09;WebTest.html (自己寫的網頁界面)qwebchannel.js (Qt下載安裝之后&#xff0c;會在安裝目錄下有這個文件&#xff0c;需要將安裝目錄下的改文件拷貝…

Flutter 應用國際化 (i18n) 與本地化 (l10n) 完整指南

Flutter 國際化 (i18n) 完全指南&#xff1a;從入門到精通 在現代移動應用開發中&#xff0c;支持多語言是觸達全球用戶的基本要求。Flutter 提供了強大且靈活的國際化 (i18n) 和本地化 (l10n) 支持。本文將帶你從零開始&#xff0c;一步步深入掌握在 Flutter 中實現國際化的幾…

計算機視覺與深度學習 | 計算機視覺中線特征提取與匹配算法綜述

文章目錄 一、線特征提取算法原理 1.1 Hough變換及其優化 1.2 LSD算法 1.3 EDLines算法 二、核心數學公式 2.1 直線表示與誤差計算 2.2 LSD算法關鍵公式 三、線特征匹配算法 3.1 LBD描述符 3.2 匹配策略 四、代碼實現 4.1 LSD線段檢測(Python) 4.2 LBD特征匹配(C++) 五、算…

Transformer 模型:Attention is All You Need 的真正含義

2017 年&#xff0c;Google Brain 發布了一篇具有里程碑意義的論文——《Attention Is All You Need》&#xff0c;這篇論文不僅首次提出了 Transformer 模型&#xff0c;更重要的是&#xff0c;它宣稱“注意機制&#xff08;Attention Mechanism&#xff09;就足以構建強大的模…

數據庫約束表的設計

數據庫約束概念&#xff1a;數據庫約束是關系型數據庫的一個重要功能&#xff0c;主要是保證數據的完整性&#xff0c;也可理解為數據的正確性&#xff08;數據本身是否正確&#xff0c;關聯關系是否正確&#xff09;&#xff08;一般是用在指定列上&#xff09;常見的約束類型…

【案例分享】TeeChart 助力 Softdrill 提升油氣鉆井數據可視化能力

在鉆井與地質工程領域&#xff0c;數據可視化是核心環節。圖表不僅需要精確與高效&#xff0c;還需符合行業習慣并支持交互與定制。Softdrill 自 2012 年起在核心產品中集成了TeeChart 圖表庫&#xff0c;將復雜的井下數據轉化為直觀的工程圖表&#xff0c;極大提升了鉆井工程師…

【Flink】Flink Runtime 架構設計

Flink Runtime 架構設計 整體架構 ┌─────────────────────────────────────────────────────────────────┐ │ Flink Runtime │ ├─────────…

Git 命令教程

Git介紹 分布式版本控制系統。 Git命令 初始化/全局配置git init初始化一個Git倉庫&#xff08;會創建一個.git的目錄&#xff09;git config --global user.name “name”設置提交時的用戶名git config user.name查看設置的用戶名git config --global user.email “youemail.c…

git config --global user.name指令報錯時的解決方案

問題分析 %HOMEDRIVE%%HOMEPATH%/.gitconfig 是Windows環境變量的表示方式&#xff1a; %HOMEDRIVE% 通常是 C:%HOMEPATH% 通常是 \Users\你的用戶名完整路徑應該是&#xff1a;C:\Users\你的用戶名\.gitconfig 但這里環境變量沒有被正確解析&#xff0c;顯示的是字面意思。 …

websocket和socket io的區別

好的&#xff0c;這是一個更具體也更常見的問題。WebSocket 是一種協議&#xff0c;而 Socket.IO 是一個庫&#xff0c;它使用了 WebSocket 但提供了多得多的功能。 簡單比喻&#xff1a; WebSocket 就像是給你提供了一條高效的“快遞專線”&#xff08;雙向通信通道&#xff…

Nginx反向代理與負載均衡部署

Nginx反向代理與負載均衡部署實戰指南前言一、規劃部署負載均衡和反向代理二、部署Nginx負載均衡器2.1. 準備基礎環境2.2. 創建Nginx運行用戶2.3. 編譯安裝Nginx2.4. 配置Nginx系統服務2.5. 驗證Nginx安裝三、部署后端2臺Tomcat應用服務器3.1. 安裝JDK3.2. 部署Tomcat實例13.3.…

從源碼和設計模式深挖AQS(AbstractQueuedSynchronizer)

AQS 概念 AbstractQueuedSynchronizer&#xff08;AQS&#xff09; 是 Java 并發包 (java.util.concurrent.locks) 的核心基礎框架&#xff0c;它的實現關鍵是先進先出 (FIFO) 等待隊列和一個用volatile修飾的鎖狀態status。具體實現有 : ReentrantLock、Semaphore、CountDownL…

Dart → `.exe`:Flutter 桌面與純命令行雙軌編譯完全指南

Dart → .exe&#xff1a;Flutter 桌面與純命令行雙軌編譯完全指南 關鍵詞&#xff1a;Dart、Flutter、Windows、可執行文件、桌面端、CLI、交叉編譯 1. 前言 很多開發者以為 Dart 只能跑在 AOT 移動端或 Web 端&#xff0c;其實 官方工具鏈早已支持一鍵輸出 Windows 原生 .ex…

互聯網接入網中PPPoE和PPP協議

<摘要> PPPoE和PPP是寬帶接入網絡中至關重要的協議組合&#xff0c;其中PPP提供通用的點對點鏈路層解決方案&#xff0c;而PPPoE則是在以太網架構上擴展PPP應用的技術橋梁。本文從技術演進視角系統解析了兩者的內在關聯與本質區別&#xff1a;PPP作為成熟鏈路層協議&…