HAUS连接 – Python项目

HAUS连接 – Python项目

大学生面临的最常见的问题之一是,我们的时间表非常不稳定,要跟上时间表是一项繁琐的工作,这些问题在这个人人自危的大流行时代被极大地放大了。这个应用程序的目的是帮助学生跟踪他们的课程、测试和作业,并协助简化教师和学生之间的沟通。HAUS-Connect是一个平台,学院的教师可以安排或重新安排会议或讲座,他们也可以为考试设置提醒,也可以上传学习材料。聊天机器人将帮助寻找学习材料。基本上,我们要确保我们没有人错过任何最后期限。目前,这是针对大学生的,但它的多功能性是巨大的,它可以大规模地用于整个企业的沟通,是一个管理准假、假期余额、待办工作等的单一系统。

功能

  • 录制的讲座链接、.ppt文件、参考书目pdf可以由教员上传。
  • 时间表的修改权限只提供给教员。
  • 将提供一个疑问部分,学生必须上传他的疑问的图片并选择主题,教师的屏幕上会弹出一个信息,他可以进一步发送解决方案。
  • 聊天机器人将帮助寻找学习材料
  • 如果某位教师重新安排了某次会议,将直接向所有学生发送短信和电子邮件。

用到的工具:

客户端 :

服务器端:

分步实现

Broadcaster:这是包含主项目文件的文件夹。

Settings.py

这个文件声明了所有的依赖性和其他设置。

from pathlib import Path
import os
  
# Build paths inside the project like this:
# BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
  
# SECURITY WARNING: keep the secret key used in 
# production secret!
SECRET_KEY = 'django-insecure-lzy=xp#!(0e-h9+%u!dsjm4-2+=j7r5hsb((@7ziv2g=dgbt'
  
# SECURITY WARNING: don't run with debug turned
# on in production!
DEBUG = True
  
ALLOWED_HOSTS = []
  
  
# Application definition
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Teacher.apps.TeacherConfig',
    'Student.apps.StudentConfig',
    'Register.apps.RegisterConfig',
    'crispy_forms',
]
  
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',
]
  
ROOT_URLCONF = 'broadcaster.urls'
  
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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 = 'broadcaster.wsgi.application'
  
  
# Database
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}
  
  
# Password validation
AUTH_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
LANGUAGE_CODE = 'en-us'
  
TIME_ZONE = 'UTC'
  
USE_I18N = True
  
USE_L10N = True
  
USE_TZ = True
  
  
# Static files (CSS, JavaScript, Images)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
  
CRISPY_TEMPLATE_PACK = "bootstrap4"
  
LOGIN_REDIRECT_URL = "/"
  
  
# Default primary key field type
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

urls.py

这个文件将不同的依赖性和其他应用程序的URL链接到主项目。

from django.contrib import admin
from django.urls import path, include
from Register import views as v
  
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include("Teacher.urls")),
    path('', include("Student.urls")),
    path('register/', v.register, name="register"),
    path("", include("django.contrib.auth.urls")),
  
]

现在让我们来创建我们项目所需的应用程序。

Register App

这个应用程序处理用户的登录和注册。

注:静态文件夹包含所有的静态文件,如JavaScript文件、CSS文件和图像。

模板文件夹

你可以看到有一个模板文件夹,其中包含两个HTML文件。第一个文件是register.html,第二个文件是login.html。

<!-- Register -->
{%load static%}
{% load crispy_forms_tags %}
<!DOCTYPE html>
<html>
<head>
    <title>Login/SignUp</title>
    <link rel="stylesheet" type="text/css" href="{% static 'Register/css/Login.css' %}">
<link href="https://fonts.googleapis.com/css2?family=Jost:wght@500&display=swap" rel="stylesheet">
</head>
  
    <body>
    <div class="main">     
    <input type="checkbox" id="chk" aria-hidden="true">
  
        <div class="signup">
  
        <form method="post" class="form-group">
            {% csrf_token %}
            <label for="chk" aria-hidden="true">Sign up</label>
                    <div class="input">
                        {{form.username}}
                    </div>
                    <div class="input">
                        {{form.email}}
                    </div>
                    <div class="input">
                        {{form.password1}}
                    </div>
                    <div class="input">
                        {{form.password2}}
                    </div>
                      
            <button type="submit" class="btn btn-success"> Register </button>
        </form>
        <div class="error">
            {{form.errors}}
        </div>
        
        </div>
        <style>
            .main{
        width: 350px;
        height: 500px;
        background:red;
        overflow: hidden;
        background: url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
        border-radius: 10px;
        box-shadow: 5px 20px 50px #000;
    }
    .error{
        color:#ffffff;
        align-items: center;
    }
        </style>
          
        <script>
  
            var form_fields = document.getElementsByTagName('input')
            form_fields[2].placeholder='Username..';
            form_fields[3].placeholder='Email..';
            form_fields[4].placeholder='Enter password...';
            form_fields[5].placeholder='Re-enter Password...';
              
        </script>
      </div>
    </body>
</html>
<!-- Login -->
{%load static%}
{% if user.is_authenticated %}
<html>
   <head>
      <title>
         {% block title %}Please Login {% endblock %}
      </title>
   </head>
   <body class="main">
      <h1 class="ml5">
         <span class="text-wrapper">
         <span class="line line1"></span>
         <span class="letters letters-left">HAUS</span>
         <span class="letters ampersand">~</span>
         <span class="letters letters-right">Connect</span>
         <span class="line line2"></span>
         </span>
      </h1>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.2/anime.min.js"></script>        
      <center>
      <p style="color:#f2f2f4">You are already logged in</p>
  
  
      </center>
      <h2 style="color:#f2f2f4"><a href="/" style="color:#f2f2f4">Click here</a> if you are a professor</h2>
      <center>
      <h2 style="color:#f2f2f4"><a href="/student_home" style="color:#f2f2f4">Click here</a> if you are a student</h2>
     </center>
   </body>
   <link rel="stylesheet" href="{% static 'Teacher/css/base.css' %}">
   <script type="text/javascript" src="{% static 'Teacher/js/base.js' %}"></script>
   <style>
      .main{
      background:  url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
      }
   </style>
</html>
{% else %}
{% load crispy_forms_tags %}
<!DOCTYPE html>
<html>
   <head>
      <title>Login/SignUp</title>
      <link rel="stylesheet" type="text/css" href="{% static 'Register/css/Login.css' %}">
      <link href="https://fonts.googleapis.com/css2?family=Jost:wght@500&display=swap" rel="stylesheet">
   </head>
   <body>
      <div class="main">
      <input type="checkbox" id="chk" aria-hidden="true">
      <div class="signup">
         <form method="post" class="form-group">
            {% csrf_token %}
            <label for="chk" aria-hidden="true">Login</label>
            <div class="input">
               {{form.username}}
            </div>
            <div class="input">
               {{form.password}}
            </div>
            <button type="submit" class="btn btn-success"> Login </button>
         </form>
         <div class="error">
            {{form.errors}}
            <center>
              
  
Dont have an account? create one <a href="{% url 'register'%}" style="color:white">here</a>
  
  
           </center>
         </div>
      </div>
      <style>
         .main{
         width: 350px;
         height: 500px;
         background:red;
         overflow: hidden;
         background: url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
         border-radius: 10px;
         box-shadow: 5px 20px 50px #000;
         }
         .error{
         color:#ffffff;
         align-items: center;
         }
      </style>
      <script>
         var form_fields = document.getElementsByTagName('input')
         form_fields[].placeholder='Username..';
         form_fields[].placeholder='Enter password...';
               
         }
      </script>
        </div>
   </body>
</html>
{% endif %}

apps.py

这将注册该应用程序,因为它将使用数据库。

from django.apps import AppConfig
  
  
class RegisterConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'Register'

forms.py

这里创建了一个自定义的注册表格。

from django import forms
from django.contrib.auth import login, authenticate
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
  
  
class RegistrationForm(UserCreationForm):
    email = forms.EmailField()
  
    class Meta:
        model = User
          
        # order in which the fields show up
        fields = ["email", "username", "password1", "password2"]

views.py

这个文件让我们管理页面的显示方式和谁能够看到这个页面。

from django.shortcuts import render,redirect
from django.contrib.auth import login,authenticate,logout
from .forms import RegistrationForm
  
# Create your views here.
def register(request):
    if request.user.is_authenticated:
         return redirect("/")
  
  
    if request.method == 'POST':
        form=RegistrationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('login')
    else:
        form=RegistrationForm()
    return render(request,"Register/register.html",{"form":form})

Student App

这个应用程序处理项目的学生方面。

模板:

About.html, ChatBot.html, faq.html, student_home.html 和 TimeTable.html

这些页面对没有登录的人来说是不可见的。

<!-- about -->
{% load static %}
{% if user.is_authenticated %}
<!DOCTYPE html>
<html>
   <head>
      <title>About Us</title>
      <link
         href="https://fonts.googleapis.com/css2?family=Jost:wght@500&display=swap"
         rel="stylesheet"
         />
   </head>
   <style>
      body{
      margin: 0;
      padding: 0;
      display: flex;
      justify-content: center;
      align-items: center;
      min-height: 100vh;
      font-family: 'Jost', sans-serif;
      background: linear-gradient(to bottom, #0f0c29, #302b63, #24243e);
      }
      .main{
      width: 350px;
      height: 500px;
      background: red;
      overflow: hidden;
      background: url("{% static 'image/1.jpg' %}") no-repeat center/ cover;
      border-radius: 10px;
      box-shadow: 5px 20px 50px #000;
      }
      label{
      color: #fff;
      font-size: 2.3em;
      justify-content: center;
      display: flex;
      margin: 60px;
      font-weight: bold;
      transition: .5s ease-in-out;
      }
      p{
      color: #fff;
      font-size: 1.3em;
      justify-content:flex-start;
      display: flex;
      margin: 20px;
      font-weight: bold;
      cursor: pointer;
      transition: .5s ease-in-out; 
      }
      .chk{
      position: absolute;
      top: 440px;
      left: 250px;
      }
      h2{
      margin: 2rem;
      text-decoration-line:underline;
      color:white;
      }
      li{
      font-size: larger;
      color:white;
      }
   </style>
   <body>
      <div class="main">
         <div class="aanounce">
            <label for="chk" aria-hidden="true">About</label>
            <h2>HAUS Developers</h2>
            <ul>
               <li>Hardeep</li>
               <li>Ahmed</li>
               <li>Utsav</li>
               <li>Sarthak</li>
            </ul>
         </div>
      </div>
   </body>
</html>
{% else %}
<html>
   <head>
      <title>
         {% block title %}Please Login {% endblock %}
      </title>
   </head>
   <body class="main">
      <h1 class="ml5">
         <span class="text-wrapper">
         <span class="line line1"></span>
         <span class="letters letters-left">HAUS</span>
         <span class="letters ampersand">~</span>
         <span class="letters letters-right">Connect</span>
         <span class="line line2"></span>
         </span>
      </h1>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.2/anime.min.js"></script>        
      <center>
         <p style="color:#f2f2f4">Sadly you are not logged in</p>
  
  
      </center>
      <center>
         <h2><a href="/login" style="color:#f2f2f4"> Login Here</a></h2>
      </center>
   </body>
   <link rel="stylesheet" href="{% static 'Teacher/css/base.css' %}">
   <script type="text/javascript" src="{% static 'Teacher/js/base.js' %}"></script>
   <style>
      .main{
      background:  url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
      }
   </style>
</html>
{% endif %}
<!-- Chat bot-->
{% load static %}
{% if user.is_authenticated %}
<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>ChatBot</title>
      <link rel="stylesheet" href="{% static 'css/ChatBot.css' %}">
      <link
         href="https://fonts.googleapis.com/css?family=Roboto+Condensed:300,300i,400,400i,700i"
         rel="stylesheet"
         />
   </head>
   <body>
      <main>
         <section>
            <br /><br /><br />
            <h1>ChatBot</h1>
            <small>Hi I am Era</small>
            <br />
              
  

               Under Construction
            
  
  
         </section>
      </main>
      <style>
         main{
         background-image: url("{% static 'image/1.jpg' %}");
         }
      </style>
   </body>
</html>
{% else %}
<html>
   <head>
      <title>
         {% block title %}Please Login {% endblock %}
      </title>
   </head>
   <body class="main">
      <h1 class="ml5">
         <span class="text-wrapper">
         <span class="line line1"></span>
         <span class="letters letters-left">HAUS</span>
         <span class="letters ampersand">~</span>
         <span class="letters letters-right">Connect</span>
         <span class="line line2"></span>
         </span>
      </h1>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.2/anime.min.js"></script>        
      <center>
         <p style="color:#f2f2f4">Sadly you are not logged in</p>
  
  
      </center>
      <center>
         <h2><a href="/login" style="color:#f2f2f4"> Login Here</a></h2>
      </center>
   </body>
   <link rel="stylesheet" href="{% static 'Teacher/css/base.css' %}">
   <script type="text/javascript" src="{% static 'Teacher/js/base.js' %}"></script>
   <style>
      .main{
      background:  url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
      }
   </style>
</html>
{% endif %}
<!-- faq-->
{% load static %}
{% if user.is_authenticated %}
<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="UTF-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <link
         href="https://fonts.googleapis.com/css?family=Roboto+Condensed:300,300i,400,400i,700i"
         rel="stylesheet"
         />
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css" integrity="sha512-1PKOgIY59xJ8Co8+NE6FZ+LOAZKjy+KY8iq0G4B3CyeY6wYHN3yt9PW0XpSriVlkMXe40PTKnXrLnZ9+fkDaog==" crossorigin="anonymous" />
      <link rel="stylesheet" href="{% static 'css/faq.css' %}" />
      <title>FAQ</title>
   </head>
   <body>
      <h1>Frequently Asked Questions</h1>
      <div class="faq-container">
         <div class="faq active">
            <h3 class="faq-title">
               Why shouldn't we trust atoms?
            </h3>
            <p class="faq-text">
               They make up everything
            </p>
  
  
            <button class="faq-toggle">
            <i class="fas fa-chevron-down"></i>
            <i class="fas fa-times"></i>
            </button>
         </div>
         <div class="faq">
            <h3 class="faq-title">
               What do you call someone with no body and no nose?
            </h3>
            <p class="faq-text">
               Nobody knows.
            </p>
  
  
            <button class="faq-toggle">
            <i class="fas fa-chevron-down"></i>
            <i class="fas fa-times"></i>
            </button>
         </div>
         <div class="faq">
            <h3 class="faq-title">
               What's the object-oriented way to become wealthy?
            </h3>
            <p class="faq-text">
               Inheritance.
            </p>
  
  
            <button class="faq-toggle">
            <i class="fas fa-chevron-down"></i>
            <i class="fas fa-times"></i>
            </button>
         </div>
         <div class="faq">
            <h3 class="faq-title">
               How many tickles does it take to tickle an octopus?
            </h3>
            <p class="faq-text">
               Ten-tickles!
            </p>
  
  
            <button class="faq-toggle">
            <i class="fas fa-chevron-down"></i>
            <i class="fas fa-times"></i>
            </button>
         </div>
         <div class="faq">
            <h3 class="faq-title">
               What is: 1 + 1?
            </h3>
            <p class="faq-text">
               Depends on who are you asking.
            </p>
  
  
            <button class="faq-toggle">
            <i class="fas fa-chevron-down"></i>
            <i class="fas fa-times"></i>
            </button>
         </div>
      </div>
      <script src="{% static 'js/faq.js' %}"></script>
      <style>
         body{
         background:  url("{%static 'image/1.jpg'%}") no-repeat center/ cover;}
      </style>
   </body>
</html>
{% else %}
<html>
   <head>
      <title>
         {% block title %}Please Login {% endblock %}
      </title>
   </head>
   <body class="main">
      <h1 class="ml5">
         <span class="text-wrapper">
         <span class="line line1"></span>
         <span class="letters letters-left">HAUS</span>
         <span class="letters ampersand">~</span>
         <span class="letters letters-right">Connect</span>
         <span class="line line2"></span>
         </span>
      </h1>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.2/anime.min.js"></script>        
      <center>
         <p style="color:#f2f2f4">Sadly you are not logged in</p>
  
  
      </center>
      <center>
         <h2><a href="/login" style="color:#f2f2f4"> Login Here</a></h2>
      </center>
   </body>
   <link rel="stylesheet" href="{% static 'Teacher/css/base.css' %}">
   <script type="text/javascript" src="{% static 'Teacher/js/base.js' %}"></script>
   <style>
      .main{
      background:  url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
      }
   </style>
</html>
{% endif %}
<!-- student_home -->
{% load static %}
{% if user.is_authenticated %}
<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="UTF-8" />
      <title>Student's Portal</title>
      <link
         href="https://fonts.googleapis.com/css?family=Roboto+Condensed:300,300i,400,400i,700i"
         rel="stylesheet"
         />
      <link
         rel="stylesheet"
         href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css"
         integrity="sha512-HK5fgLBL+xu6dm/Ii3z4xhlSUyZgTT9tuc/hSrtw6uzJOvgRr2a9jyxxT1ely+B+xFAmJKVSTbpM/CuL7qxO8w=="
         crossorigin="anonymous"
         />
      <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
      <style>
         html,
         body {
         height: 100%;
         }
         * {
         box-sizing: border-box;
         margin: 0;
         padding: 0;
         }
         body {
         font-family: "Roboto Condensed", sans-serif;
         line-height: 1.7;
         perspective-origin: 0% 50%;
         perspective: 800px;
         background: #21212d;
         }
         nav,
         main {
         transition: transform 150ms ease-out;
         }
         nav {
         z-index: 100;
         position: absolute;
         top: 0;
         left: 0;
         bottom: 0;
         width: 16em;
         background-color: #353441;
         transform: translateX(-16em);
         }
         nav.menu-active {
         transform: translateX(0);
         }
         nav.menu-hover {
         transform: translateX(-15em);
         }
         nav h1 {
         z-index: 100;
         display: block;
         position: absolute;
         top: 0;
         right: -65px;
         height: 60px;
         width: 65px;
         line-height: 60px;
         font-size: 0.8em;
         font-weight: 300;
         letter-spacing: 1px;
         color: #fff;
         text-transform: uppercase;
         text-align: center;
         background-color: #353441;
         cursor: pointer;
         }
         nav h1:hover {
         color: #353441;
         background: #fff;
         }
         nav ul {
         margin: 0;
         padding: 0;
         }
         nav li {
         display: inline-block;
         padding: 0 1em;
         width: 100%;
         height: 60px;
         color: #9dc6d1;
         line-height: 60px;
         background-color: #353441;
         transition: all 0.5s ease-in;
         }
         nav li:nth-of-type(2n) {
         background-color: #3a3947;
         }
         nav li:hover {
         background: #6d44b8;
         color: rgb(255, 255, 255);
         }
         main {
         z-index: 0;
         position: absolute;
         top: 0;
         left: 0%;
         bottom: 0;
         right: 0;
         display: flex;
         align-items: center;
         overflow: hidden;
         background-image: url("{% static 'image/1.jpg' %}");
         transform-origin: 0% 50%;
         background-size: 35%;
         width: 100%;
         }
         main:after {
         content: "";
         display: block;
         position: absolute;
         z-index: 1;
         top: 0;
         left: 0;
         bottom: 0;
         right: 0;
         background: linear-gradient(
         to right,
         transparent,
         rgba(33, 33, 45, 0.5)
         );
         visibility: hidden;
         opacity: 0;
         transition: opacity 150ms ease-out, visibility 0s 150ms;
         }
         main.menu-active {
         border-radius: 0.001px;
         transform: translateX(16em) rotateY(15deg);
         }
         main.menu-active:after {
         visibility: visible;
         opacity: 1;
         transition: opacity 150ms ease-out, visibility 0s;
         }
         main.menu-hover {
         border-radius: 0.001px;
         transform: translateX(1em) rotateY(1deg);
         }
         main section {
         position: absolute;
         top: 0;
         left: 0;
         bottom: 0;
         right: 0;
         margin: auto;
         padding: 1em 4em;
         max-width: 680px;
         overflow: auto;
         background-color: rgba(255, 255, 255, 0.753);
         }
         section h1 {
         font-weight: 800;
         font-size: 2em;
         }
         section p {
         display: inline-block;
         margin: 16px 0;
         }
         nav h1 button {
         cursor: pointer;
         position: absolute;
         top: -17px;
         left: 30%;
         height: 100px;
         background-color: transparent;
         border: 0;
         font-size: 26px;
         color: #fff;
         }
         nav h1 button:hover {
         color: #353441;
         }
         .logo {
         z-index: 1;
         position: absolute;
         width: 150px;
         top: 0;
         left: 82%;
         }
         .box {
         display: flex;
         border: 2px solid black;
         height: 50vh;
         border-radius: 5px;
         box-shadow: 5px 20px 50px #000;
         padding-bottom: 2rem;
         }
         h3 {
         margin: 15px;
         padding-top: 1rem;
         }
         .copyright{
         margin-top: 2rem;
         font-family: sans-serif;
         text-align: center;
         }
         .copyright hr{
         background-color: black;
         }
      </style>
   </head>
   <body>
      <nav class="menu-activea">
         <h1 class="hamb">
            <button id="open">
            <i class="fas fa-bars"></i>
            </button>
         </h1>
         <ul>
            <a href="{% url 'ChatBot'%}" rel="noopener noreferrer" style="text-decoration:none ;color: #fff; " >
               <li  style="cursor: pointer">
                  CHATBOT
               </li>
            </a>
            <li
               onclick="location.href=' https://drive.google.com/drive/folders/13aPy9KoDX3AWbkeech2AK-EBitiXEcNT';"
               style="cursor: pointer">
               NOTES
            </li>
            <a  href="{% url 'TimeTable'%}" rel="noopener noreferrer" style="text-decoration:none;color: #fff; ">
               <li style="cursor: pointer">
                  TIMETABLE
               </li>
            </a>
            <a  href="{% url 'Result'%}" rel="noopener noreferrer" style="text-decoration:none ;color: #fff; ">
               <li  style="cursor: pointer">
                  RESULT 
               </li>
            </a>
            <a href="{% url 'About'%}" rel="noopener noreferrer" style="text-decoration:none ;color: #fff; ">
               <li>
                  ABOUT
               </li>
            </a>
            <a  href="{% url 'FAQ'%}" rel="noopener noreferrer" style="text-decoration:none ;color: #fff; ">
               <li style="cursor: pointer">
                  FAQ
               </li>
            </a>
            <a  href="{% url 'logout'%}" rel="noopener noreferrer" style="text-decoration:none ;color: #fff;">
               <li style="cursor: pointer">
                  LOGOUT
               </li>
            </a>
         </ul>
      </nav>
      <main>
         <img class="logo" src="{% static 'image/HAUS.png' %}" >
         <section>
            <br /><br /><br />
            <h1>HAUS-Connect</h1>
            <small>Student's Portal</small>
            <br />
            <div class="container">
                 
  

                  HAUS-Connect is  platform where all the faculties can send notice,Schedule Exam and Schedule Lectures. Any action performed by faculty will send a text message to all the students informing them about any upcoming events. HAUS-Connect aims to decrease the ridge between Student and Faculty.It is a firm of the Students,by the Students, for the Students.
               
  
  
            </div>
            <div class="container">
               <h3>Announcement </h3>
               <div class="box">
                  <center>
                     {% for t in t1 %}
                     {{ t }}<br>
                     {% endfor %}
                  </center>
               </div>
            </div>
            <div class="container">
               <h3>Lectures</h3>
               <div class="box">
                  {% for t in t2 %}
                  You have a {{t.subject}}
                  extra class on {{t.date}}
                  from {{t.time_start}}
                  to {{t.time_end}}
                  <br>
                  {% endfor %}
               </div>
            </div>
            <div class="container">
               <h3>Exam</h3>
               <div class="box">
                  {% for t in t3 %}
                  You have a {{t.subject}}
                  extra class on {{t.date}}
                  from {{t.time_start}}
                  to {{t.time_end}}
                  <br>
                  {% endfor %}
               </div>
            </div>
            <div class="copyright">
               <hr>
               <h3>
                  © 2021 HAUS - All Rights Reserved
               </h3>
            </div>
         </section>
      </main>
      <script>
         (function () {
           var nav = ("nav"),
             menu =("nav h1"),
             main = $("main"),
             open = false,
             hover = false;
           
           menu.on("click", function () {
             open = !open ? true : false;
             nav.toggleClass("menu-active");
             main.toggleClass("menu-active");
             nav.removeClass("menu-hover");
             main.removeClass("menu-hover");
             console.log(open);
           });
           menu.hover(
             function () {
               if (!open) {
                 nav.addClass("menu-hover");
                 main.addClass("menu-hover");
               }
             },
             function () {
               nav.removeClass("menu-hover");
               main.removeClass("menu-hover");
             }
           );
         })();
      </script>
   </body>
</html>
{% else %}
<html>
   <head>
      <title>
         {% block title %}Please Login {% endblock %}
      </title>
   </head>
   <body class="main">
      <h1 class="ml5">
         <span class="text-wrapper">
         <span class="line line1"></span>
         <span class="letters letters-left">HAUS</span>
         <span class="letters ampersand">~</span>
         <span class="letters letters-right">Connect</span>
         <span class="line line2"></span>
         </span>
      </h1>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.2/anime.min.js"></script>        
      <center>
         <p style="color:#f2f2f4">Sadly you are not logged in</p>
  
  
      </center>
      <center>
         <h2><a href="/login" style="color:#f2f2f4"> Login Here</a></h2>
      </center>
   </body>
   <link rel="stylesheet" href="{% static 'Teacher/css/base.css' %}">
   <script type="text/javascript" src="{% static 'Teacher/js/base.js' %}"></script>
   <style>
      .main{
      background:  url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
      }
   </style>
</html>
{% endif %}
<!-- Time Table  -->
{% load static %}
{% if user.is_authenticated %}
<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="UTF-8" />
      <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <title>TIMETABLE</title>
      <link rel="stylesheet" type="text/css" href="{% static 'css/Timetable.css' %}" />
   </head>
   <body>
      <div class="limiter">
         <div class="container-table100" >
            <div class="wrap-table100">
               <div class="table100 ver3">
                  <table data-vertable="ver3">
                     <thead>
                        <tr class="row100 head">
                           <th class="column100 column1" data-column="column1"></th>
                           <th class="column100 column2" data-column="column2">
                              Sunday
                           </th>
                           <th class="column100 column3" data-column="column3">
                              Monday
                           </th>
                           <th class="column100 column4" data-column="column4">
                              Tuesday
                           </th>
                           <th class="column100 column5" data-column="column5">
                              Wednesday
                           </th>
                           <th class="column100 column6" data-column="column6">
                              Thursday
                           </th>
                           <th class="column100 column7" data-column="column7">
                              Friday
                           </th>
                           <th class="column100 column8" data-column="column8">
                              Saturday
                           </th>
                        </tr>
                     </thead>
                     <tbody>
                        <tr class="row100">
                           <td class="column100 column1" data-column="column1">
                              8:00 AM - 9:00 AM
                           </td>
                           <td class="column100 column2" data-column="column2">
                              --
                           </td>
                           <td class="column100 column3" data-column="column3">Data Structures</td>
                           <td class="column100 column4" data-column="column4">Digital Electronics</td>
                           <td class="column100 column5" data-column="column5">Microprocessor Programming</td>
                           <td class="column100 column6" data-column="column6">OOPS With Java</td>
                           <td class="column100 column7" data-column="column7">
                              Open Elective
                           </td>
                           <td class="column100 column8" data-column="column8">--</td>
                        </tr>
                        <tr class="row100">
                           <td class="column100 column1" data-column="column1">
                              9:00 AM - 10:00 AM
                           </td>
                           <td class="column100 column2" data-column="column2">--</td>
                           <td class="column100 column3" data-column="column3">
                              Discrete Math
                           </td>
                           <td class="column100 column4" data-column="column4">
                              Discrete Math
                           </td>
                           <td class="column100 column5" data-column="column5">OOPS With Java</td>
                           <td class="column100 column6" data-column="column6">
                              Data Structures
                           </td>
                           <td class="column100 column7" data-column="column7">Data Structures - Lab</td>
                           <td class="column100 column8" data-column="column8">--</td>
                        </tr>
                        <tr class="row100">
                           <td class="column100 column1" data-column="column1">
                              10:00 AM - 11:00 AM
                           </td>
                           <td class="column100 column2" data-column="column2">
                              --
                           </td>
                           <td class="column100 column3" data-column="column3">Open Elective</td>
                           <td class="column100 column4" data-column="column4">Data Structures - Lab</td>
                           <td class="column100 column5" data-column="column5">Data Structures</td>
                           <td class="column100 column6" data-column="column6">Discrete Math</td>
                           <td class="column100 column7" data-column="column7">
                              OOPS With Java
                           </td>
                           <td class="column100 column8" data-column="column8">--</td>
                        </tr>
                        <tr class="row100">
                           <td class="column100 column1" data-column="column1">
                              11:00 AM - 12:00 PM
                           </td>
                           <td class="column100 column2" data-column="column2">--</td>
                           <td class="column100 column3" data-column="column3">
                              Microprocessor Programming - Lab
                           </td>
                           <td class="column100 column4" data-column="column4">
                              OOPS With Java
                           </td>
                           <td class="column100 column5" data-column="column5">Open Elective</td>
                           <td class="column100 column6" data-column="column6">
                              Digital Electronics - Lab
                           </td>
                           <td class="column100 column7" data-column="column7">Microprocessor Programming</td>
                           <td class="column100 column8" data-column="column8">--</td>
                        </tr>
                        <tr class="row100">
                           <td class="column100 column1" data-column="column1">
                              12:00 PM - 1:00 PM
                           </td>
                           <td class="column100 column2" data-column="column2">
                              --
                           </td>
                           <td class="column100 column3" data-column="column3">Digital Electronics</td>
                           <td class="column100 column4" data-column="column4">Microprocessor Programming</td>
                           <td class="column100 column5" data-column="column5">
                              Discrete Math - Tutorial
                           </td>
                           <td class="column100 column6" data-column="column6">Microprocessor Programming - Lab</td>
                           <td class="column100 column7" data-column="column7">
                              OOPS With Java - Lab
                           </td>
                           <td class="column100 column8" data-column="column8">--</td>
                        </tr>
                        <tr class="row100">
                           <td class="column100 column1" data-column="column1">
                              1:00 PM - 2:00 PM
                           </td>
                           <td class="column100 column2" data-column="column2">--</td>
                           <td class="column100 column3" data-column="column3">
                              Discrete Math
                           </td>
                           <td class="column100 column4" data-column="column4">
                              OOPS With Java - Lab
                           </td>
                           <td class="column100 column5" data-column="column5">Data Structures</td>
                           <td class="column100 column6" data-column="column6">Digital Electronics</td>
                           <td class="column100 column7" data-column="column7">Discrete Math</td>
                           <td class="column100 column8" data-column="column8">--</td>
                        </tr>
                        <tr class="row100">
                           <td class="column100 column1" data-column="column1">
                              2:00 PM - 3:00 PM
                           </td>
                           <td class="column100 column2" data-column="column2">
                              --
                           </td>
                           <td class="column100 column3" data-column="column3">--</td>
                           <td class="column100 column4" data-column="column4">--</td>
                           <td class="column100 column5" data-column="column5">--</td>
                           <td class="column100 column6" data-column="column6">--</td>
                           <td class="column100 column7" data-column="column7">
                              --
                           </td>
                           <td class="column100 column8" data-column="column8">--</td>
                        </tr>
                        <tr class="row100">
                           <td class="column100 column1" data-column="column1">
                              3:00 PM - 4:00 PM
                           </td>
                           <td class="column100 column2" data-column="column2">--</td>
                           <td class="column100 column3" data-column="column3">--</td>
                           <td class="column100 column4" data-column="column4">--</td>
                           <td class="column100 column5" data-column="column5">--</td>
                           <td class="column100 column6" data-column="column6">--</td>
                           <td class="column100 column7" data-column="column7">--</td>
                           <td class="column100 column8" data-column="column8">--</td>
                        </tr>
                     </tbody>
                  </table>
               </div>
            </div>
         </div>
      </div>
      <!--===============================================================================================-->
      <script src="{% static 'js/jquery.js' %}"></script>
      <!--===============================================================================================-->
      <script src="{% static 'js/TimeTable.js' %}"></script>
      <style>
         .container-table100{
         background:  url("{%static 'image/1.jpg'%}") no-repeat center/ cover;}
      </style>
   </body>
</html>
{% else %}
<html>
   <head>
      <title>
         {% block title %}Please Login {% endblock %}
      </title>
   </head>
   <body class="main">
      <h1 class="ml5">
         <span class="text-wrapper">
         <span class="line line1"></span>
         <span class="letters letters-left">HAUS</span>
         <span class="letters ampersand">~</span>
         <span class="letters letters-right">Connect</span>
         <span class="line line2"></span>
         </span>
      </h1>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.2/anime.min.js"></script>        
      <center>
         <p style="color:#f2f2f4">Sadly you are not logged in</p>
  
  
      </center>
      <center>
         <h2><a href="/login" style="color:#f2f2f4"> Login Here</a></h2>
      </center>
   </body>
   <link rel="stylesheet" href="{% static 'Teacher/css/base.css' %}">
   <script type="text/javascript" src="{% static 'Teacher/js/base.js' %}"></script>
   <style>
      .main{
      background:  url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
      }
   </style>
</html>
{% endif %}

views.py

这个文件让我们管理页面的显示方式和谁能够看到这个页面。

from Teacher.models import Announcements, Exam, Class
from django.shortcuts import render
from django.contrib.auth import logout
from django.http import HttpResponse, HttpResponseRedirect
  
# Create your views here.
def home(response):
    t1 = Announcements.objects.all()
    t2 = Class.objects.all()
    t3 = Exam.objects.all()
    return render(response, "Student/student_home.html",
                  {"t1": t1, "t2": t2, "t3": t3})
  
  
def chatbot(response):
    return render(response, "Student/ChatBot.html")
  
def timetable(response):
    return render(response, "Student/TimeTable.html")
  
  
def result(response):
    return render(response, "Student/Result.html")
  
def faq(response):
    return render(response, "Student/faq.html")
  
  
def logout_request(request):
    logout(request)
    return render(request, "Student/student_home.html", {})
  
def about(request):
    return render(request, "Student/About.html", {})

urls.py

这里我们为我们的模板设置路径。

from django.urls import path
from . import views
  
urlpatterns = [
    path("student_home/", views.home, name="Home"),
    path("chatbot/", views.chatbot, name="ChatBot"),
    path("FAQ/", views.faq, name="FAQ"),
    path("Result/", views.result, name="Result"),
    path("TimeTable/", views.timetable, name="TimeTable"),
    path("logout/", views.logout_request, name="logout"),
    path("about/", views.about, name="About")
]

Teachers App

这个应用程序处理项目的教师方面。

模板:

所有这些页面对于没有登录的人来说是不可见的,而且具有 “学生 “身份的账户也不允许使用这些页面。

<!-- Announcement.html-->
{% load static %}
<!DOCTYPE html>
<html>
   {% if user.is_authenticated %}
   <head>
      <title>Create Announcement</title>
      <link rel="stylesheet" type="text/css" href="{% static 'Teacher/css/announcement.css' %}">
      <link href="https://fonts.googleapis.com/css2?family=Jost:wght@500&display=swap" rel="stylesheet">
   </head>
   <body>
      <div class="main">
         <div class="aanounce">
            <label for="chk" aria-hidden="true">Announcement</label>
            <form method="POST" action="/announcement/">
               {% csrf_token %}
               <div class="input">
                  {{form.text}}
               </div>
               <br>
                 
  
Tick this to send message
                  {{form.check}}
               
  
  
               <br>
               <br>
               <button type="submit",name="save"> Send </button>
            </form>
         </div>
      </div>
      <style>
         .main{
         width: 350px;
         height: 500px;
         background: red;
         overflow: hidden;
         background: url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
         border-radius: 10px;
         box-shadow: 5px 20px 50px #000;
         }
      </style>
      <script>
         var form_fields = document.getElementsByTagName('input')
         form_fields[1].placeholder='Write your announcement';      
           
      </script>
   </body>
   {% else %}
   <html>
      <head>
         <title>
            {% block title %}Please Login {% endblock %}
         </title>
      </head>
      <body class="main">
         <h1 class="ml5">
            <span class="text-wrapper">
            <span class="line line1"></span>
            <span class="letters letters-left">HAUS</span>
            <span class="letters ampersand">~</span>
            <span class="letters letters-right">Connect</span>
            <span class="line line2"></span>
            </span>
         </h1>
         <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.2/anime.min.js"></script>        
         <center>
         <p style="color:#f2f2f4">Sadly you are not logged in</p>
  
  
           </center>
         <center>
         <h2><a href="/login" style="color:#f2f2f4"> Login Here</a></h2>
           </center>
      </body>
      <link rel="stylesheet" href="{% static 'Teacher/css/base.css' %}">
      <script type="text/javascript" src="{% static 'Teacher/js/base.js' %}"></script>
      <style>
         .main{
         background:  url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
         }
      </style>
   </html>
   {% endif %} 
</html>
<!-- Base.html-->
{% load static %}
<html>
    <head>
        <title>
            {% block title %}Please Login {% endblock %}
        </title>
    </head>
  
    <body class="main">
        <h1 class="ml5">
            <span class="text-wrapper">
              <span class="line line1"></span>
              <span class="letters letters-left">HAUS</span>
              <span class="letters ampersand">~</span>
              <span class="letters letters-right">Connect</span>
              <span class="line line2"></span>
            </span>
          </h1>
          <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.2/anime.min.js"></script>        
          
        <center><p style="color:#f2f2f4">You dont have authorization to access this page. </p>
  
  </center>
        <center><p style="color:#f2f2f4">If you are a professor contact administrator. </p>
  
  </center>
        <center>  <h2 style="color:#f2f2f4"><a href="/student_home" style="color:#f2f2f4">Click here</a> if you are a student</h2></center>
        
  
    </body>
    <link rel="stylesheet" href="{% static 'Teacher/css/base.css' %}">
    <script type="text/javascript" src="{% static 'Teacher/js/base.js' %}"></script>
    <style>
        .main{
  background:  url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
            }
    </style>
</html>
<!-- Class.html-->
{% load static %}
<!DOCTYPE html>
<html>
    {% if user.is_authenticated %}
      
<head>
    <title>Schedule Class</title>
    <link rel="stylesheet" type="text/css" href="{% static 'Teacher/css/class.css' %}">
<link href="https://fonts.googleapis.com/css2?family=Jost:wght@500&display=swap" rel="stylesheet">
</head>
<body>
    <div class="main">      
          
          
        <form method="POST" action="/class/">
            <br>
            <br>
            <label for="chk" aria-hidden="true">Class</label>
            {% csrf_token %}
            <br>
              
  

            {{form.subject.label}}
            {{form.subject}}
            
  
  
              
              
  

                {{form.date.label}}
                {{form.date}}
            
  
  
          
              
  

            {{form.time_start.label}}
            {{form.time_start}}
        
  
  
          
  

            {{form.time_end.label}}
            {{form.time_end}}
        
  
  
          
          
  

            {{form.check.label}}
            {{form.check}}
        
  
  
          
            <button type="submit",name="save"> Schedule Class </button>
          
        </form>
              
    </div>
  
    <style>
        .main{
    width: 350px;
    height: 590px;
    background: red;
    overflow: hidden;
    background:  url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
    border-radius: 10px;
    box-shadow: 5px 20px 50px #000;
}
    </style>
    <script>
  
        var form_fields = document.getElementsByTagName('input')
        form_fields[1].placeholder='Subjcet';
        form_fields[2].placeholder='DD/MM/YY';     
        form_fields[3].placeholder='HH:MM AM/PM'; 
        form_fields[4].placeholder='HH:MM AM/PM';           
      
    </script>
</body>
{% else %}
<html>
    <head>
        <title>
            {% block title %}Please Login {% endblock %}
        </title>
    </head>
  
    <body class="main">
        <h1 class="ml5">
            <span class="text-wrapper">
              <span class="line line1"></span>
              <span class="letters letters-left">HAUS</span>
              <span class="letters ampersand">~</span>
              <span class="letters letters-right">Connect</span>
              <span class="line line2"></span>
            </span>
          </h1>
          <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.2/anime.min.js"></script>        
          
        <center><p style="color:#f2f2f4">Sadly you are not logged in</p>
  
  </center>
        <center>  <h2><a href="/login" style="color:#f2f2f4"> Login Here</a></h2></center>
          
    </body>
    <link rel="stylesheet" href="{% static 'Teacher/css/base.css' %}">
    <script type="text/javascript" src="{% static 'Teacher/js/base.js' %}"></script>
    <style>
        .main{
  background:  url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
            }
    </style>
</html>
  
{% endif %} 
</html>
<!-- Exam.html -->
{% load static %}
<!DOCTYPE html>
<html>
    {% if user.is_authenticated %}
      
<head>
    <title>Schedule Exam</title>
    <link rel="stylesheet" type="text/css" href="{% static 'Teacher/css/exam.css' %}">
<link href="https://fonts.googleapis.com/css2?family=Jost:wght@500&display=swap" rel="stylesheet">
</head>
<body>
    <div class="main">      
          
      
    <form method="POST" action="/exam/">
        <br>
        <label for="chk" aria-hidden="true">Exam</label>
        {% csrf_token %}
        <br>
          
  

        {{form.subject.label}}
        {{form.subject}}
        
  
  
          
          
  

            {{form.date.label}}
            {{form.date}}
        
  
  
      
          
  

        {{form.time_start.label}}
        {{form.time_start}}
    
  
  
      
  

        {{form.time_end.label}}
        {{form.time_end}}
    
  
  
      
      
  

        {{form.check.label}}
        {{form.check}}
    
  
  
    <br>
        <button type="submit",name="save"> Schedule Exam </button>
      
    </form>
  
              
    </div>
</body>
  
<style>
    .main{
    width: 350px;
    height: 590px;
    background: red;
    overflow: hidden;
    background: url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
    border-radius: 10px;
    box-shadow: 5px 20px 50px #000;
}
</style>
{% else %}
      <html>
        <head>
            <title>
                {% block title %}Please Login {% endblock %}
            </title>
        </head>
      
        <body class="main">
            <h1 class="ml5">
                <span class="text-wrapper">
                  <span class="line line1"></span>
                  <span class="letters letters-left">HAUS</span>
                  <span class="letters ampersand">~</span>
                  <span class="letters letters-right">Connect</span>
                  <span class="line line2"></span>
                </span>
              </h1>
              <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.2/anime.min.js"></script>        
              
            <center><p style="color:#f2f2f4">Sadly you are not logged in</p>
  
  </center>
            <center>  <h2><a href="/login" style="color:#f2f2f4"> Login Here</a></h2></center>
              
        </body>
        <link rel="stylesheet" href="{% static 'Teacher/css/base.css' %}">
        <script type="text/javascript" src="{% static 'Teacher/js/base.js' %}"></script>
        <style>
            .main{
      background:  url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
                }
        </style>
    </html>
  
  {% endif %} 
</html>
<!-- home.html -->
{% load static %}
<!DOCTYPE html>
<html lang="en">
   {% if user.is_authenticated %}
   <head>
      <meta charset="UTF-8" />
      <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <link
         rel="stylesheet"
         href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css"
         integrity="sha512-HK5fgLBL+xu6dm/Ii3z4xhlSUyZgTT9tuc/hSrtw6uzJOvgRr2a9jyxxT1ely+B+xFAmJKVSTbpM/CuL7qxO8w=="
         crossorigin="anonymous"
         />
      <link rel="stylesheet" href="{% static 'Teacher/css/style.css' %}" />
      <title>Teacher's Portal</title>
      <img class="pdeu" src="{% static 'Teacher/images/h1.png' %}" alt="PDEU">
   </head>
   <body>
      <!------------------------------------------------------>
      {% include 'Teacher/messages.html' %}
      <!------------------------------------------------------>   
      <div class="container">
         <div class="content">
            <h1>HAUS-Connect</h1>
            <small>Teacher's Portal</small>
              
  

               Basically, here all Faculty's can send notice , Schedule Exam and Schedule Lectures. Any action performed by Faculty will send a text message to all students informing them about any upcoming events. HAUS-Connect aims to decrease the ridge between Student and Faculty.It is a firm of the Students,by the Students, for the Students.   
            
  
  
            <h2>TimeTable</h2>
            <small>*Note this is fixed timetable provided by the institution </small>
            <div class="container1">
               <div
                  class="panel active"
                  style="
                  background-image: url(https://drive.google.com/uc?export=view&id=1EYoNIJNZe7s7cFA3rBvNxesi-TZONIoe);
                  "
                  >
               </div>
               <div
                  class="panel"
                  style="
                  background-image: url(https://drive.google.com/uc?export=view&id=1MKpz6fFHogku_2f-9JUOkqBwT36VgITb);
                  "
                  >
               </div>
               <div
                  class="panel"
                  style="
                  background-image: url(https://drive.google.com/uc?export=view&id=1Jytl4YnqtN5-hVqmciOVy-WQc5UfUuyB);
                  "
                  >
               </div>
               <div
                  class="panel"
                  style="
                  background-image: url(https://drive.google.com/uc?export=view&id=1KB4D5-qJUelFc_Xa6ZmfTmKdM_zD6f52);
                  "
                  >
               </div>
               <div
                  class="panel"
                  style="
                  background-image: url(https://drive.google.com/uc?export=view&id=1-VDdpedgkyjlYWMrraIcafjC-YTduY0O);
                  "
                  >
               </div>
            </div>
              
  

               We the students of PDEU CE`20 batch, appreciate you for putting all your efforts  and helping us throughout the day from solving our 'silly' doubts to help us in any problem which we faced during college. 
            
  
  
            <small>-Thanking You.</small>
            <div class="copyright">
               <hr>
               <h3>
                  © 2021 HAUS - All Rights Reserved
               </h3>
            </div>
         </div>
      </div>
      <div class="circle-container">
         <div class="circle">
            <button id="close">
            <i class="fas fa-times"></i>
            </button>
            <button id="open">
            <i class="fas fa-bars"></i>
            </button>
         </div>
      </div>
      <nav>
         <ul>
            <li>
               <a href="{% url 'Announcement'%}" title=""  rel="noopener noreferrer"><i class="fas fa-bullhorn"></i>Notice</a>
            </li>
            <li>
               <a href="{% url 'Extra Class'%}"  rel="noopener noreferrer"><i class="fas fa-book"></i>Class</a>
            </li>
            <li>
               <a href="{% url 'Exams'%}"  rel="noopener noreferrer"><i class="fas  fa-graduation-cap"></i>Exam</a>
            </li>
            <li >
               <a href="{% url 'logout'%}"  rel="noopener noreferrer"><i class="fas fa-sign-out-alt" aria-hidden="true"></i>Logout</a>
            </li>
         </ul>
      </nav>
      <script src="{% static 'Teacher/js/app.js' %}"></script>
      <script src="{% static 'Teacher/js/app1.js' %}"></script>
   </body>
</html>
{% else %}
<html>
   <head>
      <title>
         {% block title %}Please Login {% endblock %}
      </title>
   </head>
   <body class="main">
      <h1 class="ml5">
         <span class="text-wrapper">
         <span class="line line1"></span>
         <span class="letters letters-left">HAUS</span>
         <span class="letters ampersand">~</span>
         <span class="letters letters-right">Connect</span>
         <span class="line line2"></span>
         </span>
      </h1>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.2/anime.min.js"></script>        
      <center>
         <p style="color:#f2f2f4">Sadly you are not logged in</p>
  
  
      </center>
      <center>
         <h2><a href="/login" style="color:#f2f2f4"> Login Here</a></h2>
      </center>
   </body>
   <link rel="stylesheet" href="{% static 'Teacher/css/base.css' %}">
   <script type="text/javascript" src="{% static 'Teacher/js/base.js' %}"></script>
   <style>
      .main{
      background:  url("{%static 'Register/images/1.jpg'%}") no-repeat center/ cover;
      }
   </style>
</html>
{% endif %}
<!--Logout.html-->
<html>
    <head>
        <title>
            Login here
        </title>
    </head>
{% load crispy_forms_tags %}
  
    <body>
        <h1>Register Here</h1>
  
        <form method="post" class="form-group">
            {% csrf_token %}
            {{ form|crispy }}
            <button type="submit" class="btn btn-success"> Log in </button>
              
              
  
<p>Dont have an account? Create one <a href="/register">here </a></p>
  
  
        </form>
    </body>
</html>
<!-- message.html-->
{% if messages %}
    {% for message in messages %}
    <div class="alert alert-{{ message.tags }} m-2" id='msg' role='alert'>
       <center>{{message}}</center> 
    </div>
    <script>
        setTimeout(function(){
          if (('#msg').length>0){
            ('#msg').remove();
          }
        },2000)
      </script>
    {% endfor %}
{% endif %}

admin.py

这被用来注册将使用数据库的模型。

from django.contrib import admin
from .models import *
# Register your models here.
  
admin.site.register(Announcements)
admin.site.register(Class)
admin.site.register(Exam)

apps.py

注册该应用程序

from django.apps import AppConfig
  
class TeacherConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'Teacher'

decorator.py

这个文件使我们能够限制对网页的访问。

from django.http import HttpResponse
from django.shortcuts import redirect, render
  
  
def allowed_users(allowed_roles=[]):
    def decorator(view_func):
        def wrapper_func(request, *args, **kwargs):
            group = None
              
            if request.user.groups.exists():
                group = request.user.groups.all()[0].name
            if group in allowed_roles:
                return view_func(request, *args, **kwargs)
            else:
                return render(request, "Teacher/base.html", {})
                
        return wrapper_func
    return decorator'

forms.py

创建表格

from django import forms
  
  
class createnewannouncement(forms.Form):
    text = forms.CharField(label="Announcement", max_length=1000)
    check = forms.BooleanField(label="Send message", required=False)
  
  
class schedule_extra_class(forms.Form):
    subject = forms.CharField(label="Subject", max_length=20)
    date = forms.CharField(label="Date", max_length=20)
    time_start = forms.CharField(label="Starting Time", max_length=20)
    time_end = forms.CharField(label="Ending Time", max_length=20)
    check = forms.BooleanField(label="Send message", required=False)
  
  
class schedule_exam(forms.Form):
    subject = forms.CharField(label="Subject ", max_length=20)
    date = forms.CharField(label="Date", max_length=20)
    time_start = forms.CharField(label="Starting Time", max_length=20)
    time_end = forms.CharField(label="Ending Time", max_length=20)
    check = forms.BooleanField(label="Send message", required=False)

models.py

这就为表格设置了数据库,以便将数据保存在其中。

from django.db import models
  
class Announcements(models.Model):
    text = models.TextField(max_length=500)
  
    def __str__(self):
        return self.text
  
  
class Class(models.Model):
    subject = models.TextField(max_length=50)
    date = models.TextField(max_length=50)
    time_start = models.TextField(max_length=5)
    time_end = models.TextField(max_length=5)
    message = "You have a {0} extra class on {1} from {2} to {3}".format(
        str(subject), str(date), str(time_start), str(time_end))
  
    def __str__(self):
        message = "You have a {0} extra class on {1} from {2} to {3}".format(
            str(self.subject), str(self.date), str(self.time_start), str(self.time_end))
        return self.message
  
  
class Exam(models.Model):
    subject = models.TextField(max_length=50)
    date = models.TextField(max_length=50)
    time_start = models.TextField(max_length=5)
    time_end = models.TextField(max_length=5)
    message = "You have a {0} exam on {1} from {2} to {3}".format(
        str(subject), str(date), str(time_start), str(time_end))
  
    def __str__(self):
        message = "You have a {0} exam on {1} from {2} to {3}".format(
            str(self.subject), str(self.date), str(self.time_start), str(self.time_end))
        return self.message

sending_messages.py

该文件负责向提供的号码发送信息

def send_message(message):
    from twilio.rest import Client
  
    client = Client("Account SId", "Auth token")
  
    numbers = ["+916351816925", "+91xxxxxxxxxx",
               "+91xxxxxxxxxx", "+91xxxxxxxxxx"]
    names = ["Sarthak", "Hardeep", "Utsav", "Ahmed"]
  
    for i in range(4):
        m = ("Hello {} ".format(names[i]))+message
        client.messages.create(to=numbers[i],
                               from_="number provided by the api",
                               body=(m))

urls.py

链接模板到地址

from django.urls import path
from . import views
  
urlpatterns = [
    path("", views.home, name="Home"),
    path("<int:id>", views.index, name="index"),
    path("announcement/", views.create_announcement, name="Announcement"),
    path("class/", views.create_class, name="Extra Class"),
    path("exam/", views.create_exam, name="Exams"),
    path("logout/", views.logout_request, name="logout"),
    path("base/", views.base, name="Base"),
  
  
]

views.py

这个文件让我们管理页面的显示方式和谁能够看到这个页面。同时,这也是我们使用decorator.py来限制访问权限的地方。

from datetime import date
from django.shortcuts import render
from django.contrib.auth import logout
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib import messages
from .decorator import allowed_users
  
from .models import *
from .forms import *
from .Sending_messages import *
  
  
def base(request):
    return render(request, "Teacher/base.html")
  
  
@allowed_users(allowed_roles=['admin', 'Professor'])
def home(response):
    return render(response, "Teacher/home.html")
  
  
def logout_request(request):
    logout(request)
    return render(request, "Teacher/home.html", {})
  
  
@allowed_users(allowed_roles=['admin', 'Professor'])
def index(response, id):
    a = Announcements.objects.get(id=id)
    return render(response, "Teacher/home.html", {})
  
  
@allowed_users(allowed_roles=['admin', 'Professor'])
def create_announcement(response):
    if response.method == "POST":
        form = createnewannouncement(response.POST)
  
        if form.is_valid():
            t = form.cleaned_data["text"]
            a = Announcements(text=t)
            a.save()
  
            if form.cleaned_data["check"] == True:
                send_message(t)
                messages.success(
                    response, 'Announcement was saved and messages are sent')
            else:
                messages.success(response, 'Announcement was saved')
            return render(response, "Teacher/home.html", {})
    else:
        form = createnewannouncement()
        return render(response, "Teacher/announcement.html", {"form": form})
  
  
@allowed_users(allowed_roles=['admin', 'Professor'])
def create_class(response):
    if response.method == "POST":
        form = schedule_extra_class(response.POST)
  
        if form.is_valid():
            c1 = form.cleaned_data["subject"]
            c2 = form.cleaned_data["date"]
            c3 = form.cleaned_data["time_start"]
            c4 = form.cleaned_data["time_end"]
            c = Class(subject=c1, date=c2, time_start=c3, time_end=c4)
            c.save()
            t = "You have a {0} extra class on {1} from {2} to {3}".format(
                str(c1), str(c2), str(c3), str(c4))
            if form.cleaned_data["check"] == True:
                send_message(t)
                messages.success(
                    response, 'Class is scheduled and messages are sent')
            else:
                messages.success(response, 'Class is scheduled')
            return render(response, "Teacher/home.html", {"text": t})
    else:
        form = schedule_extra_class()
        return render(response, "Teacher/class.html", {"form": form})
  
  
@allowed_users(allowed_roles=['admin', 'Professor'])
def create_exam(response):
    if response.method == "POST":
        form = schedule_exam(response.POST)
  
        if form.is_valid():
            e1 = form.cleaned_data["subject"]
            e2 = form.cleaned_data["date"]
            e3 = form.cleaned_data["time_start"]
            e4 = form.cleaned_data["time_end"]
            e = Exam(subject=e1, date=e2, time_start=e3, time_end=e4)
            e.save()
            t = "You have a {0} exam on {1} from {2} to {3}".format(
                str(e1), str(e2), str(e3), str(e4))
            if form.cleaned_data["check"] == True:
                send_message(t)
                messages.success(
                    response, 'Exam is scheduled and messages are sent')
            else:
                messages.success(response, 'Exam is scheduled')
            return render(response, "Teacher/home.html", {"text": t})
    else:
        form = schedule_exam()
        return render(response, "Teacher/exam.html", {"form": form})

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程