Content-Management-System für Abschlussentwurfsdokumente basierend auf Python+Bootstrap+Django+MySQL

Inhaltsverzeichnis

Zusammenfassung I
Zusammenfassung II
Kapitel 1 Einleitung 1
1.1 Themenhintergrund und Bedeutung 1
1.2 Forschungsstand im In- und Ausland 1
1.3 Ziele des Systemdesigns 1
1.4 Aufbau dieser Arbeit 1
Kapitel 2 Machbarkeitsanalyse 2
2.1 Technische Machbarkeitsanalyse 2
2.2 Betriebliche Machbarkeit 2
2.3 Wirtschaftliche Machbarkeit 2
Kapitel 3 Anforderungsanalyse 3
3.1 Gesamtsystem-Anforderungsanalyse 3
3.2 Detaillierte System-Anforderungsanalyse 3
3.3 System-Datenbank-Anforderungsanalyse 3
3.3.1 Datenflussdiagramm 3
3.3.2 Datenwörterbuchbeschreibung 9
Kapitel 4 Systementwicklungstools und Einsatztechnologieeinführung 17
4.1 System Entwicklungstools 17
4.1.1 PyCharm 17
4.1.2 MySQL 17
4.1.3 NaviCat Premium
17 4.2 Systemnutzungstechnologie 17
4.2.1 Programmiersprache Python 17
4.2.2 Django-Framework basierend auf MVT-Architektur 18
4.2.3 FastDFS Distributed Storage 18
4.2. 4 Nginx 19
Kapitel 5 Systemdesign 20
5.1 Systemsoftware- und Hardwareumgebung 20
5.1.1 Systemhardwareumgebung 20
5.1.2 Systemsoftwareumgebung 20
5.2 Gesamtdesign des Systems 20
5.2.1 Systemübersicht und -funktionen 20
5.3 Detailliertes Design des Systems 21
5.3.1 Registrierungsverwaltung 21
5.3.2 Anmeldeverwaltung 21
5.3.3 Themenverwaltung 22
5.3.4 Themenauswahlverwaltung 23
5.3.5 Themeneröffnungsverwaltung 23
5.4 Systemdatenbankentwurf 23
5.4.1 Konzeptioneller Entwurf 24
5.4.2 Logischer Entwurf 24
5.4.3 Physischer Entwurf 25
Kapitel 6 Systemrealisierung 28
6.1 Absolventenrollenverwirklichung 28
6.1.1 Themenauswahlverwirklichung 28
6.1.2 Eröffnungsverwirklichung 28
6.1.4 Antwort-Realisierung 28
6.2 Abschlussberater-Funktion-Realisierung 29
6.3 Lehrsekretär-Funktion-Realisierung 29
Kapitel 7 Systemtest 30
Fazit 31 Referenzen
31
Danksagungen 31
Kapitel 3 Anforderungsanalyse
3.1 Gesamtsystem-Anforderungsanalyse
Dieses System richtet sich an Lehrpersonal und neue Studierende, unterteilt in Lehrer, Lehrsekretäre und Schüler erledigen ihre Geschäfte im Vordergrund und Lehrsekretäre erledigen ihre Geschäfte im Hintergrund. Schüler können sich anmelden, Themen auswählen, persönliche Daten überprüfen, Dokumente einreichen und bewerten usw. Lehrer können Vorgänge wie das Stellen von Fragen und das Hochladen von Dokumenten ausführen, und Lehrsekretäre können relevante Dateninformationen verwalten und bereitstellen.

3.2 Systemdetaillierte Anforderungsanalyse
Hauptfunktionen der Studierenden:
(1) Anmelden: Melden Sie sich mit Benutzername und Passwort an.
(2) Themenauswahl: Alle Themen anzeigen und Themen für Abschlussdesign auswählen.
(3) Themeneröffnung: Laden Sie die themenbezogene Dokumentvorlage herunter und laden Sie den Themeneröffnungsbericht hoch.
(4) Hochladen des Zwischenberichts: Laden Sie die relevanten Dokumente des Zwischenberichts hoch.
(5) Verteidigung: Verteidigungsantrag, relevante Dokumente hochladen.
(6) Feedback: Bewertung des Dozenten.

Hauptfunktionen von Lehrern:
(1) Themenverwaltung: Themen hinzufügen, löschen, überprüfen und ändern.
(2) Themenstatusverwaltung: Ändern Sie den Themenbestätigungsstatus.
(3) Zwischenberichtsverwaltung: Relevante Dokumente des Zwischenberichts herunterladen.
(4) Verteidigung: Relevante Dokumente hochladen und den Verteidigungsprozess aufzeichnen.
(5) Leistungsmanagement: Benotung der Absolventen und Berechnung der Gesamtpunktzahl der Verteidigung.
(6) Feedback: Bewerten Sie die Absolventen.

Die Hauptfunktionen des Lehrsekretärs:
(1) Anmelden: Melden Sie sich mit Benutzername und Passwort an.
(2) Verwaltung von Benutzerinformationen, Benutzerrechten, Fragen und Fragenstatus.

from django.http import HttpResponse
from django.shortcuts import render, redirect, reverse, get_object_or_404
from django.views import View
from apps.user.models import User
from django.contrib.auth import authenticate, login, logout
from rolepermissions.roles import assign_role


# /register/
class RegisterView(View):
    @staticmethod
    def get(request):
        # 显示注册页面
        return render(request, 'register.html')

    @staticmethod
    def post(request):
        name = request.POST.get('registerName', None)
        username = request.POST.get('registerUsername', None)
        password = request.POST.get('registerPassword', None)
        school = request.POST.get('registerSchool', None)
        department = request.POST.get('registerDepartment', None)
        email = request.POST.get('registerEmail', None)

        if not all([username, password]):
            print("数据不完整")

        user = User.objects.create_user(
            name=name,
            username=username,
            password=password,
            school=school,
            department=department,
            email=email
        )
        user.save()

        # 默认角色为学生
        assign_role(user, 'student')
        return redirect(reverse('login'))


# /login/
class LoginView(View):
    @staticmethod
    def get(request):
        return render(request, 'login.html')

    @staticmethod
    def post(request):
        username = request.POST.get('userName', None)
        password = request.POST.get('passWord', None)
        print(username)
        print(password)

        user = authenticate(username=username, password=password)
        print(user)

        if user is not None:
            login(request, user)
            next_url = request.GET.get('next', reverse('topic:all_topic'))
            response = redirect(next_url)
            return response
        else:
            return render(request, 'login.html')


class LogoutView(View):
    '''退出登录'''

    def get(self, request):
        '''退出登录'''
        # 清除用户session信息
        logout(request)
        # 跳转到首页
        return redirect(reverse('login'))


def user_center(request):
    user = User.objects.get(id=request.user.id)
    context = {
        "name": user.name,
        "school": user.school,
        "department": user.department,
        "memo": user.memo,
        "email": user.email
    }
    return render(request, "user/user_center.html", context=context)


def edit_user_profile(request):
    user = User.objects.get(id=request.user.id)

    if request.method == "GET":
        department = user.department
        email = user.email
        memo = user.memo
        context = {
            "department": department,
            "email": email,
            "memo": memo,
        }
        return render(request, "user/edit_user_profile.html", context=context)
    else:
        print("!!!")
        form = request.POST
        print(form)
        user.department = form['department']
        user.email = form['email']
        user.memo = form['memo']
        user.save()
        return render(request, "user/edit_user_profile.html")


def change_pwd(request):
    user = get_object_or_404(User, id=request.user.id)
    if request.method == "GET":
        return render(request, "user/change_pwd.html")
    else:
        form = request.POST
        print(form)
        pwd = form['registerPassword']
        pwd_confirm = form['registerPasswords']
        if pwd == pwd_confirm:
            print(pwd)
            user.set_password(pwd)
            user.save()
            return redirect(reverse("login"))
        else:
            return redirect(reverse("topic:all_topic"))


def page_not_found(request, exception):
    return render(request, '404.html', status=404)


def page_error(request):
    return render(request, '500.html', status=500)

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

Supongo que te gusta

Origin blog.csdn.net/sheziqiong/article/details/130718239
Recomendado
Clasificación