Django小项目练习之后台管理系统

    通过django开发一个简单后台管理系统,主要运用django、前端相关知识。本文主要记录一步一步实现过程

一、创建项目

创建project
django-admin startproject user_manager
创建APP
python manage.py startapp  app01

二、设计表结构

    主要有班级表、老师表、学生表、用户表。班级和学生是一对多的关系、班级和老师是多对多的关系。

from django.db import models

# Create your models here.

class Classes(models.Model):
    caption = models.CharField(max_length=32)

class Student(models.Model):
    name = models.CharField(max_length=32)
    cls = models.ForeignKey(Classes,on_delete=models.CASCADE)

class Teacher(models.Model):
    name = models.CharField(max_length=32)
    cls = models.ManyToManyField(Classes)

class Administrator(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=32)
models.py
生成同步数据库的脚本
python manage.py makemigrations 
同步数据库
python manage.py migrate  

三、相关功能实现

     1、登录注册

用户访问登录url,返回登录页面,输入用户名/密码,验证通过,返回首页;验证失败,提示错误信息。用户未登录直接访问首页url,重定向到登录页面(其中会用到cookie和session相关知识)

    url设计

from django.contrib import admin
from django.urls import path

from django.conf.urls import include, url
from app01.views import *


urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^login/', login), #登录url
    url(r'^index/', index), #首页url
]
urls.py

    登录页面/首页页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="login.html" method="post">
    {% csrf_token %}

    <div>
        <label for="user"> 用户名:</label>
        <input id="user" type="text" name="user">
    </div>

    <div>
        <label for="pwd"> 密  码:</label>
        <input id="pwd" type="password" name="pwd">
    </div>

    <div>
        <label></label>
        <input type="submit" value="登录">
        <span style="color: red">{{ msg }}</span>
    </div>
</form>

</body>
</html>
login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>hell {{ user }}</p>
</body>
</html>
index.html
from django.shortcuts import render

# Create your views here.
from django.shortcuts import redirect
from django.http import HttpResponse
from django.views.decorators import csrf
import json
import requests
import re
import os
from app01.models import *
#from django.contrib.sessions.backends.db import SessionStore


def login(request):
    message = ''
    print(request.COOKIES)
"""{'_ga': 'GA1.1.664909549.1531444385', 'csrftoken': 'cH0jMqG7OmrbRcSoOD6FdNTgGdVdFOvRl6x3gH74GnkTFLdxyNAifvoVDiGkinWi', 'sessionid': 'wd7pa91lltnnxe7qjet6uxe3tuyb32jz', 'username': 'root'}"""
    #v = request.session
    #request.session.clear()
    if request.method == "POST":
        print(request.POST)
        user = request.POST.get('user')
        pwd = request.POST.get('pwd')
        '''if user == 'root' and pwd == '123':
            rep = redirect('/index')
            # 将username写入浏览器cookie,失效时间为60s
            rep.set_cookie('username',user,60)
            return rep'''
        #从数据库中查询用户和密码是否正确
        num=Administrator.objects.filter(username=user,password=pwd).count()

        if num:
            rep = redirect('/index')
            rep.set_cookie('username', user, 60)
            #request.session['is_login'] = True
            #request.session['username'] = user
            return rep
        else:
            message = '用户或密码错误'
    return render(request, 'login.html',{'msg':message})


def index(request):
    #如果用户已经登录获取用户,否则返回登录页面,禁止用户直接访问index页面
    # 通过cookie判断用户是否已登录,提取浏览器中的cookie,如果不为空,表示已经登录
    user = request.COOKIES.get('username')
    #user = request.session.get('username')
    if user:
        return render(request,'index.html',{'user':user})
    else:
        return redirect('/login')
views.py

猜你喜欢

转载自www.cnblogs.com/quanloveshui/p/11685272.html
今日推荐