django做一个注册登录界面

一、基于sb-admin模板完成以下登录的逻辑

用户想要访问一个网页,首先要求注册账号,有了账号之后再去登录,才能访问网站的主页

1.先说以下用户注册的逻辑:

register  注册

form 表单保存数据到用户表

密码要加密

2.然后是登录界面

login  登录

form 表单提交数据和数据库数据校验

 先校验用户是否存在

    存在:校验密码

             密码正确:登录成功

             密码不正确  跳转到login登录  密码错误

    不存在  跳转到login

成功:index首页

失败:login

二、具体项目的实现步骤

1.首先打开你想要创建django项目的目录,右击--->在此处打开命令行

django做一个注册登录界面_第1张图片

2.激活Anaconda环境

activate djangoPath

3.创建django项目

django-admin startproject OAProject

django做一个注册登录界面_第2张图片

4.创建app

切到django项目下,执行命令:

python manage.py startapp OAUser

django做一个注册登录界面_第3张图片

5.在pycharm中打开django项目,配置环境

前面的好几篇博客中都详细介绍过这个操作,这里就简单说一下

发现这里是红叉,所以必须配置环境

6.新建文件,搭好项目结构

7.数据库建模

models.py

8.settings.py配置

9.数据库同步

python manage.py check     django校验

python manage.py makemigrations    数据库语句生成

python manges.py migrate    数据库同步

10.测试一下index.html网站主页

views.py

urls.py

因为此时,除了html的文件都被我们移动到了static下面,所以此时的路径都得变,在html的开头加载上static

{% load static %}

类似于这样的也都要加上static标签

运行服务器:

11.注册界面

register.html

前端界面同样要加载static,  {% load static %}

其他路径变了的都加上{% static '  ' %}

表单的method是post,记得要写{% csrf_token %}

因为数据库只有三个字段,用户名,邮箱,密码,所以表单就写三个就行

views.py  register

注册的时候,在前端输入密码,经过加密之后保存到数据库中

import hashlib

def setPassword(password):
    """
    加密密码,算法单次md5
    :param apssword: 传入的密码
    :return: 加密后的密码
    """
    md5 = hashlib.md5()
    md5.update(password.encode())
    password = md5.hexdigest()
    return str(password)

 

from django.shortcuts import render
from OAUser.models import OAUser
from django.shortcuts import HttpResponseRedirect

def register(request):
    if request.method=="POST" and request.POST:
        data=request.POST
        username=data.get("username")
        email=data.get("email")
        password=data.get("password")
        OAUser.objects.create(
            username=username,
            email=email,
            password=setPassword(password),
        )
        return HttpResponseRedirect('/login/')
    return render(request,"register.html")

urls.py

path('register/',register),
path('login/',login),

启动服务器:

12.登录界面  login

login.html

前端界面同样要加载static,  {% load static %}

其他路径变了的都加上{% static '  ' %}

表单的method是post,记得要写{% csrf_token %}

views.py

def login(request):
    if request.method == 'POST' and request.POST:
        email = request.POST.get("email")
        password = request.POST.get("password")
        e = OAUser.objects.filter(email=email).first()
        if e:
            now_password = setPassword(password)
            db_password = e.password
            if now_password == db_password:
                response = HttpResponseRedirect('/index/')
                response.set_cookie("username", e.username)
                return response

    return render(request, "login.html")

urls.py

启动服务器运行

输入邮箱,密码,点击登录,如果邮箱,密码正确,就会进入登录

13.登出界面(退出登录)logout

点击退出界面,就会进入登录界面

views.py

def logout(request):
    response=HttpResponseRedirect('/login/')
    response.delete_cookie("username")
    return response

urls.py

12.限制登录,只有登录的用户才能访问网站主页

views.py

使用装饰器

def userValid(fun):
    def inner(request,*args,**kwargs):
        username=request.COOKIES.get("username")
        if username:
            return fun(request,*args,**kwargs)
        else:
            return HttpResponseRedirect('/login/')
    return inner

@userValid

def index(request):
    return render(request, "index.html")

启动服务器

 

你可能感兴趣的:(django项目,django)