Django 小实例S1 简易学生选课管理系统 —— 四、实现登录页面

Django制作简单的学生表增删改查 Django学生管理系统(增删改查)Django制作一个简单的增删改查创建项目Students一.资源准备 Django制作一个简单的增删改查 创建项目Students 一.资源准备 数据库配置: 1.1 setting文件中找到DATABAES进行修改 1.2主应用init文件下导入数据库模块 import pymysql pymysql.install_as_MySQLdb() ... 阅读详情

作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师。

python Django实现的一个简易的教务选课系统。
介绍与演示的视频版本已发到我的b站: https://www.bilibili.com/video/BV1er4y1w7ty。
项目已上传到我的github: https://github.com/BigShuang/SimpleStudentCourseManagementSystem。

S1总目录:

〇、初步介绍与演示
一、项目流程梳理与数据库设计
二、新建项目(project)、设置、运行
三、创建用户模型(model)
四、实现登录页面
五、实现注册功能

======================= 大爽歌作,made by big shuang =======================

四、实现登录页面

本文涉及到的新的额外知识点:template、view、urls、forms
没有这部分基础的读者,建议一边阅读本文一边查阅相关知识
这里推荐我的专栏:Django自学笔记 第2、3、5章内容

0 添加用户视图(view)与模板(template)、设置urls

Django 采用了 MVT 的软件设计模式,其中MVT分别指

  • Model(模型) - 负责数据
  • View(视图)- 负责逻辑
  • Template(模板)- 负责前端展示

我们在前面已经实现了模型(model)

这里要实现一个页面,基本套路是

  1. 先完成模板(template) - 前端展示用
  2. 然后实现视图(view) - 后端逻辑
  3. 设置好url - 设置url和view的对应关系

本文就是按照这个顺序来组织代码的

1 主页面

本项目主页面实际是一个选择身份的页面,点击后跳转到具体的身份登录页,整个页面实现起来比较简单

  • A 首先添加模板(template)
    这里由于主页面和登录页面的背景是相同的,所以这两个页面可以使用共同的母版,这里先添加母版

在项目的template文件夹下,新建user文件夹,在其中添加background.html,内容

<!DOCTYPE html>
<html lang="en">
{% load static %}
<head>
    <meta charset="UTF-8">
    <title>
        学生选课管理系统
    </title>
</head>
<body>
<div class="main-container">
    <div class="main-header">
        <div class="main-title">学生选课管理系统</div>
        <div class="sub-title">Student Course Management System</div>
        {% block welcome_message %}
        {% endblock %}
    </div>
    <div class="login-container">
        {% block login_container %}
        {% endblock %}
    </div>
</div>
</body>
</html>

然后再添加login_home.html文件,内容如下

{% extends "user/background.html" %}
{% block login_container %}
<div class="login-kind student-login-button">
    <a href="">学生登录</a>
</div>
<div class="login-kind teacher-login-button">
    <a href="">教师登录</a>
</div>
{% endblock %}
  • B 添加对应的视图(view)方法
    在./user/views.py中,添加方法
def home(request):
    return render(request, "user/login_home.html")
  • C 设置主页的url
    在./user/urls.py中,
    先在开头导入视图方法,即
from user import views

然后给urlpatterns列表添加元素

path('login/', views.home, name="login")

此时运行项目,访问http://127.0.0.1:8000/login/
效果如下
在这里插入图片描述

2 登录页面view实现

登录需要表单来提交登录信息(账号和密码),这里我们使用Django From
在user文件夹中新建forms.py, 添加以下代码来实现老师和学生的登录信息表单

from django import forms
from .models import Student, Teacher


class StuLoginForm(forms.Form):
    uid = forms.CharField(label='学号', max_length=10)
    password = forms.CharField(label='密码', max_length=30, widget=forms.PasswordInput)


class TeaLoginForm(forms.Form):
    uid = forms.CharField(label='教职工号', max_length=10)
    password = forms.CharField(label='密码', max_length=30, widget=forms.PasswordInput)
  • A 添加模板(template)
    在项目的template/user文件夹下,添加login_detail.html:
{% extends "user/background.html" %}
{% block welcome_message %}
    <div class="welcome-message">欢迎</div>
{% endblock %}
{% block login_container %}
    {% if kind == "student" %}
        <div class="login-kind-title">我是学生</div>
    {% else %}
        <div class="login-kind-title">我是老师</div>
    {% endif %}
    <div class = "form">
        <form method="post">
            {% csrf_token %}
            {{form.as_p}}
            <div class="submit-button">
                <input type="submit" value="登录"/>
                <a href="">注册</a>
            </div>
        </form>
        <div class="return-button"><a href="">返回上一页</a></div>
    </div>
{% endblock %}
  • B 添加对应的视图(view)方法
    为了区分学生和老师,这里给该视图添加了kind参数
    kind必须为"teacher"或"student",如果不是的话,就会返回一个文本标明这不是一个合适的kind。
    所以需要在视图中添加用于返回的文本,考虑到后续也会有一些其他文本。
    这里建议把文本放在一个专门的py文件中,不仅方便修改和检查,在以后如果要支持多语言也方便。

这里在项目下建立一个constants.py文件,存放相关的文本
先添加一个标明这是不支持的kind的文本

INVALID_KIND = "Invalid kind.kind should be student or teacher."

在./user/views.py中,添加方法

from django.http.response import HttpResponse

from constants import INVALID_KIND
from user.forms import StuLoginForm, TeaLoginForm

def login(request, *args, **kwargs):
    if not kwargs or "kind" not in kwargs or kwargs["kind"] not in ["teacher", "student"]:
        return HttpResponse(INVALID_KIND)

    kind = kwargs["kind"]

    if request.method == 'POST':
        if kind == "teacher":
            form = TeaLoginForm(data=request.POST)
        else:
            form = StuLoginForm(data=request.POST)

        if form.is_valid():
            uid = form.cleaned_data["uid"]

            temp_res = "hello, %s" % uid
            return HttpResponse(temp_res)
    else:
        context = {'kind': kind}
        if kind == "teacher":
            form = TeaLoginForm()
        else:
            form = StuLoginForm()

        context['form'] = form

        return render(request, 'user/login_detail.html', context)

由于还没有实现注册功能,所以这里的登录只先实现了各空壳,
填写账号密码就先直接各个hello的相应

  • C 设置主页的url
    在./user/urls.py中,
    先在开头导入视图方法,即
from user import views

然后给urlpatterns列表添加元素

path('login/<slug:kind>', views.login, name="login")

然后这个时候我们需要去更新下前面主页的href,指向对应的学生老师登录页
更新后的login_home.html文件如下

{% extends "user/background.html" %}
{% block login_container %}
<div class="login-kind student-login-button">
    <a href="{% url "login" "student" %}">学生登录</a>
</div>
<div class="login-kind teacher-login-button">
    <a href="{% url "login" "teacher" %}">教师登录</a>
</div>
{% endblock %}

此时运行项目,访问http://127.0.0.1:8000/login/
点击我是学生,对应页面效果:
在这里插入图片描述
随便填个学号密码(比如12345678)
点击登录后页面:
在这里插入图片描述

到这里,一个简陋的登录页面就算完成了

3 收纳urls到具体的app中

我们上面直接将user这一app对应的urlpatterns写到了./SSCMS/urls.py中
这样虽然不是不行,但是对于稍微大一点的项目来说,所有urlpatterns写到一起,会混乱不好管理。
所以我们这里,将app的urls写到对应的app文件夹中的ursl.py中,
在使用include方法来收纳到./SSCMS/urls.py中的app文件名路径url下

改动后的./SSCMS/urls.py如下

from django.urls import path, include

urlpatterns = [
    path('user/', include("user.urls")),
]

在user文件夹下新建urls.py如下

from django.urls import path
from user import views

urlpatterns = [
    path('login/', views.home, name="login"),
    path('login/<slug:kind>', views.login, name="login"),
]

运行项目后用浏览器访问http://127.0.0.1:8000/user/login/即可打开登录主页面

同时一般来说,大家都是通过浏览器访问http://127.0.0.1:8000/来访问项目主页面的。
所以在./SSCMS/urls.py中的urlpatterns 里面添加一个path('', home)(需要先在文件开头导入from user.views import home)就可以了

Django 小实例S1 简易学生选课管理系统 —— 〇、初步介绍与演示 python Django实现的一个简易的教务选课系统。 介绍与演示的视频版本已发到我的b站: https://www.bilibili.com/video/BV1er4y1w7ty。 项目已上传到我的github: https://github.com/BigShuang/SimpleStudentCourseManagementSystem。 S1总目录: 〇、初步介绍与演示 一、项目流程梳理与数据库设计 ======================= 大爽歌作,made by big shuang. 阅读详情

相关推荐

Python基于Django框架实现的一个学生信息管理系统源码.zip

Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理

基于Pycharm的Django学习 —— 用户登录小demo

为了巩固前面学习的Django内容,我们来写一个用户登录的小demo吧! 需求:写一个简单的用户登录页面,当用户输入用户名和密码时,后端获取用户输入的数据,并且验证是否输入正确,再做对应的处理。 这个案例不难,但是当时还是挺惊艳我的,有一些细节值得注意。 <form method="post" action="/login/"> <label> <input type="text" name="user" placeholder="用户

❀雾里看花花里看雾❀ 2450

OJ(while+cin.get()判断结束)

今天要记录一道看起来十分简单的OJ题目,但开始对于cin的一些操作忘得差不多了,没做出来,故记下来给自己提个醒。 描述 给出包含N个单词的一行输入,输出N行。第一行和输入一样。每次输出过一行后,这一行的第一个单词在下一行被放到最后。 输入 包含N个单词的字符串,单词以一个空格分开。N不在输入中给出,你需要计算单词的数量来获得。字符串包含的字符数小于100。 输出 输出N行。...

Stark_JC的博客 2357

Django框架开发学生管理系统

源码:https://gitee.com/laoliNb666/ss_manager_by_django。

m0_58613430的博客 3246

深入解析UE5内存分析:从Memreport到Unreal Insights

本文深入解析了UE5内存分析的两大核心工具:Memreport与Unreal Insights。Memreport提供详细的内存快照,帮助定位UObject等资源的内存占用;而Unreal Insights则能进行实时监控与历史回溯,精准追踪内存泄漏。掌握这两款工具是优化UE5项目性能、确保大型项目稳定运行的必备技能。

lg888的博客 1009

初识机会网络仿真器ONE中ExternalMovement移动模型(导入外部移动数据)

最近半个月一直在研究ONE中关于ExternalMovement移动模型的源代码,在网上几乎没有找到相关的资料,很是苦恼,如果有共同研究方向的小伙伴欢迎联系我,共同讨论进步。 下面记录一下几点感悟: 1、使用外部数据的前提是在ONE的配置文件中增加及修改相关代码: Group.movementModel = ExternalMovement ExternalMovement.file = move...

qq_36974792的博客 659

django基于python的高校教室管理系统--python-计算机毕业设计

高校教室管理系统,主要的模块包括查看首页、个人中心、教师管理、学生管理、教室信息管理、教师申请管理、学生申请管理、课时表管理、教师取消预约管理、学生取消预约管理等功能。系统中管理员主要是为了安全有效地存储和管理各类信息,还可以对系统进行管理与更新维护等操作,并且对后台有相应的操作权限。要想实现高校教室管理系统的各项功能,需要后台数据库的大力支持。管理员验证注册信息,收集信息,并由此分析得出的关联信息等大量的数据都由数据库管理。...

qq_1262330535的博客 746

如何理解界面陷阱电荷呢(interface trapped charge)和费米钉扎效应?

如何理解界面陷阱电荷呢?(interface trapped charge) 我们在学半导体物理的时候经常对各种界面态和陷阱分不清楚,然而这却是半导体中最为关键的知识点之一。我这路主要介绍一下如何比较直观地理解界面陷阱电荷,应该也有叫界面态,快态之类的。 在介绍界面陷阱电荷之前,我们可以回顾一下施主(donor)和受主(acceptor)的概念。在si中如果掺杂了n型杂质P,那么P由于最外层电子有5个,有一个电子比较容易跑走,成为自由移动的导电电子,在能带中可以表现为电子从禁带中的能级跃迁到导带,这种情况我

Wang_P_P的博客 3万+

Django 小实例S1 简易学生选课管理系统 —— 五、实现注册功能

python Django实现的一个简易的教务选课系统。 介绍与演示的视频版本已发到我的b站: https://www.bilibili.com/video/BV1er4y1w7ty。 项目已上传到我的github: https://github.com/BigShuang/SimpleStudentCourseManagementSystem。 S1总目录: 〇、初步介绍与演示 一、项目流程梳理与数据库设计 二、新建项目(project)、设置、运行 三、创建用户模型(model) 四、实现登录页面 .

大爽老师的博客 2024

window系统 dlib库安装

1. 安装visual studio 1.1. 安装vs2017或以上版本 1.2. 我们需要安装使用C++的桌面开发,且必须选上用于Cmake的Visual C++工具 1.3. 安装完成后,将D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin 添加到环境变量PATH中 2 下载cmake文件,并添加环境变量 2.1 在c

@bangbang的博客 815

搞懂 ABAP 里的 Language Settings:登录语言、文本环境语言与 sy-langu 的真实含义

SAP系统中语言设置并非单一字段决定,而是由登录语言(logon language)和文本环境语言(text environment language)共同控制。登录语言在会话期间固定,而文本环境语言可通过SET LOCALE语句修改,影响文本处理、排序、异常显示等行为。开发中需区分两者:使用CL_ABAP_SYST方法获取登录语言,通过sy-langu或GET LOCALE获取当前文本环境语言。语言环境切换应谨慎处理并尽快恢复,避免影响会话中其他程序。在多语言场景下,正确处理语言设置对确保文本相关功能正常

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1307

Django 小实例S1 简易学生选课管理系统 —— 二、新建项目(project)、设置、运行

python Django实现的一个简易的教务选课系统。 介绍与演示的视频版本已发到我的b站: https://www.bilibili.com/video/BV1er4y1w7ty。 项目已上传到我的github: https://github.com/BigShuang/SimpleStudentCourseManagementSystem。 S1总目录: 〇、初步介绍与演示 一、项目流程梳理与数据库设计 二、新建项目(project)、设置、运行 ======================= 大.

大爽老师的博客 2976

【推荐100个unity插件】帮助你快速开发一款FPS游戏—— FPS Framework

FPS Framework 快速入门指南 FPS Framework 是一个 Unity 开发框架,可加速 FPS 游戏开发。主要功能包括: 第一人称控制器:基于 Character Controller 实现,提供移动、跳跃、下蹲等功能,支持自定义参数调整 渲染管线转换:内置 RP 转换器,支持 URP/HDRP 等渲染管线一键切换 库存系统: 采用双列表管理:物品列表(Items)和可收集物列表(Collectables) 支持自定义库存物品和可收集物类型 提供拾取/丢弃功能实现 快速开始: 通过预制件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2569

Django 小实例S1 简易学生选课管理系统 —— 一、项目流程梳理与数据库设计

python Django实现的一个简易的教务选课系统。 介绍与演示的视频版本已发到我的b站: https://www.bilibili.com/video/BV1er4y1w7ty。 项目已上传到我的github: https://github.com/BigShuang/SimpleStudentCourseManagementSystem。 S1总目录: 〇、初步介绍与演示 一、项目流程梳理与数据库设计 ======================= 大爽歌作,made by big shuang.

大爽老师的博客 2663

Scale-up,scale-out技术概述

本文系统分析了Scale-up与Scale-out两种扩展技术在现代计算中的应用与发展。Scale-up通过增强单节点性能,适用于高耦合任务,而Scale-out通过横向扩展节点,实现高可用性和无限扩展。在芯片层面,Chiplet技术推动Scale-up发展;在数据中心层面,二者协同工作构建强大集群。光模块在长距离高带宽传输中发挥关键作用。文章对比了NVIDIA、AMD和Broadcom三家公司的技术路线,指出NVIDIA采用封闭生态,AMD选择开放标准,Broadcom则主导底层连接技术。未来发展方向将聚

元直的博客 1446

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Django 小实例S1 简易学生选课管理系统 —— 三、创建用户模型(model)

python Django实现的一个简易的教务选课系统。 介绍与演示的视频版本已发到我的b站: https://www.bilibili.com/video/BV1er4y1w7ty。 项目已上传到我的github: https://github.com/BigShuang/SimpleStudentCourseManagementSystem。 S1总目录: 〇、初步介绍与演示 一、项目流程梳理与数据库设计 二、新建项目(project)、设置、运行 三、创建用户模型(model) =========.

大爽老师的博客 2101

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

基于Django的学生选课系统设计与实现论文

B/S架构可以在不同的电脑网路及平台上以透明的方式运作,将不同的资讯以无缝的方式整合,由特定的 B/S架构比 C/S架构具有以下优势:易于维护、易更新、低成本、多选项;数据库设计是开发中比较重要的一步,需要先设计整体的表,确定项目,必须要确定几张表,设计表的结构,表之间的关联关系等,只有这样才能保证系统的稳固性。管理员输入用户名和密码,下拉选择框,选择用户权限,然后点击立即登录,系统与保存在数据库的数据进行匹配,如果用户名与密码与数据库存放数据匹配,系统跳转到用户页面,否则提示错误重新跳转到登录页面。

qq_1406299528的博客 673

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Vue+javaweb+Python的学生线上课程选择管理系统+数据可视化大屏+Django+flask+springboot

网络选课管理系统是一个基于互联网的应用程序,旨在帮助教师和学生进行课程注册和管理工作。该系统允许学生在线上查看课程信息,包括选课信息、退课信息、成绩信息、课程评价等。学生可以按照自己的学习计划和兴趣选择课程,并在系统中完成注册流程。系统管理员负责维护课程信息,更新课程,处理学生和教师的选课请求,并监控选课进度。

QQ511008285的博客 776

springboot+vue+elementui新生入学管理系统-java ssm

该部分内容包含了首页,个人中心,专业管理,班级管理,学生管理,商品分类管理,商品信息管理,新生签到管理,交流论坛,系统管理,订单管理等功能。新生签到管理,在新生签到管理页面可以对索引,签到名称,签到时间,二维码,学号,姓名,专业,班级,审核回复,审核状态,审核等内容进行详情,修改和删除等操作。商品信息管理,在商品信息管理页面可以对索引,商品名称,商品分类,商品图片,商品规格,商品品牌,价格,单限,库存等内容进行详情,修改和删除等操作。2.4Python语言简介 6。2.3MySQL环境配置 6。

豆包程序员 237

计算机毕业设计Node.js+Vuedjango学生学习评价与分析系统(程序+源码+LW+部署)

学分信息管理,在学分信息管理页面可以对索引、学号、学生姓名、课堂表现、作业情况、平时成绩、期中成绩、期末成绩、总分、成绩等级、发布时间、工号、教师姓名等内容进行详情,修改和删除等操作,如图5-11所示。学分信息管理,在学分信息管理页面可以对索引、学号、学生姓名、课堂表现、作业情况、平时成绩、期中成绩、期末成绩、总分、成绩等级、发布时间、工号、教师姓名等内容进行详情,修改和删除等操作,如图5-9所示。推荐HbuilderX;4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;

计算机毕业设计学长_ 261

Django计算机毕业设计教务排课管理系统(程序+lw)Python

该项目含有源码、文档、程序数据库、配套开发软件、软件安装教程项目运行环境配置:Pychram社区版py项目技术:django + python+ Vue 等等组成,B/S模式 +pychram管理等等。环境需要1.运行环境:最好是python3.7.7,我们在这个版本上开发的。其他版本理论上也可以。2.pycharm环境:pycharm都可以。推荐pycharm社区版;3.mysql环境:建议是用5.7版本均可。

真纯Django毕设程序 410

基于python的作业管理系统_GitHub - allwaysLove/SchoolAssignmentManageSystem: 一款基于 Python3 与 Django WEB框架 的作业管理...

作业管理系统 ???? 简介Python3 与 Django WEB框架 的作业管理系统,提供作业管理及查询服务???? 作者???? 界面展示后台管理界面作业管理界面课程表管理系统获取接口简单使用说明???? 安装通过源代码安装git clone https://github.com/allwaysLove/SchoolAssignmentManageSystem.gitpython -m pip install ...

weixin_32259717的博客 640

jquery小案例:实现简单的购物系统

采用技术主要是jquery,html+css实现简简单单的表格布局,jquery初学者一定不要错过!,将自己的知识由点到面,内附全部详细代码,直接让代码跑起来!

qq_60614034的博客 901

简单学生选课系统之登录界面

图片 代码: checkcode.jsp var code ; //在全局定义验证码 //产生验证码 function createCode(){ code = ""; var codeLength = 4;//验证码的长度 var checkCode = document.getElementById("checkCode");

涛涛之海 1万+

课程设计之学生选课管理系统

一、课程设计任务 完成学生选课管理系统的开发 二、需求描述 本系统是一个单机版的小型的学生选课管理系统,在本系统中,开发了一个面向管理员、学生和教师这三个对象的教务平台,对学生提供的服务有登录、选课、、修改登录密码、和查询成绩这几个服务,所选课程总数不能超过3门;对教师提供的服务有登录、修改登录密码和登录成绩;对管理员提供的服务有登录开设学生和教师帐号、删除学生和教师帐号的服务。 三、系统总体设计 1.系统架构设计 (1)架构:单机 (2)运行软件环境: windows XP SP3 、jdk

分享技术热点,看天下大事 3万+

简单学生选课系统之学生身份登录

图片       代码: dofirstpage.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here <% request.setCharacterEncoding("utf

涛涛之海 3647
上一篇: Django自学笔记 4-3 模型(models)主键外键
下一篇: Django自学笔记 2-2 URL详细匹配规则
大爽歌
博客等级 码龄9年 422粉丝 92原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值