django做一个注册登录界面

末蓝、 2022-02-23 03:46 637阅读 0赞

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

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

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

register 注册

form 表单保存数据到用户表

密码要加密

2.然后是登录界面

login 登录

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

先校验用户是否存在

  1. 存在:校验密码
  2. 密码正确:登录成功
  3. 密码不正确 跳转到login登录 密码错误
  4. 不存在 跳转到login

成功:index首页

失败:login

二、实现的步骤

1、先打开你要创建的django项目,shift+右键 再此处打开命令窗口

2、激活ancanda环境

activate DjangoPath

3、创建django项目

django-admin startproject OAProject

4、创建app

切换到当前创建的项目目录下

python manage.py startapp OAProject

20190403194355296.png

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 1

7.数据库建模

models.py

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 2

8.settings.py配置

配置id

20190403200317312.png

配置app

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 3

配置templates路径

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 4

配置语言,时区

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 5

配置state路径

20190403200806974.png

9.数据库同步

python manage.py check django校验

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

python manges.py migrate 数据库同步

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 6

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

views.py

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 7

urls.py

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 8

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

  1. {% load static %}

2019040320273478.png

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

运行服务器:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 9

11.注册界面

register.html

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

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

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

20190403203858412.png

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 10

views.py register

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

  1. import hashlib
  2. def setPassword(password):
  3. """
  4. 加密密码,算法单次md5
  5. :param apssword: 传入的密码
  6. :return: 加密后的密码
  7. """
  8. md5 = hashlib.md5()
  9. md5.update(password.encode())
  10. password = md5.hexdigest()
  11. return str(password)
  12. from django.shortcuts import render
  13. from OAUser.models import OAUser
  14. from django.shortcuts import HttpResponseRedirect
  15. def register(request):
  16. if request.method=="POST" and request.POST:
  17. data=request.POST
  18. username=data.get("username")
  19. email=data.get("email")
  20. password=data.get("password")
  21. OAUser.objects.create(
  22. username=username,
  23. email=email,
  24. password=setPassword(password),
  25. )
  26. return HttpResponseRedirect('/login/')
  27. return render(request,"register.html")

urls.py

  1. path('register/',register),
  2. path('login/',login),

启动服务器:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 11

12.登录界面 login

login.html

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

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

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

views.py

  1. def login(request):
  2. if request.method == 'POST' and request.POST:
  3. email = request.POST.get("email")
  4. password = request.POST.get("password")
  5. e = OAUser.objects.filter(email=email).first()
  6. if e:
  7. now_password = setPassword(password)
  8. db_password = e.password
  9. if now_password == db_password:
  10. response = HttpResponseRedirect('/index/')
  11. response.set_cookie("username", e.username)
  12. return response
  13. return render(request, "login.html")

urls.py

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 12

启动服务器运行

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 13

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

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

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

views.py

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

urls.py

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 14

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

views.py

使用装饰器

  1. def userValid(fun):
  2. def inner(request,*args,**kwargs):
  3. username=request.COOKIES.get("username")
  4. if username:
  5. return fun(request,*args,**kwargs)
  6. else:
  7. return HttpResponseRedirect('/login/')
  8. return inner
  9. @userValid
  10. def index(request):
  11. return render(request, "index.html")

启动服务器

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dfb3B0aW1pc3RpYw_size_16_color_FFFFFF_t_70 15

发表评论

表情:
评论列表 (有 0 条评论,637人围观)

还没有评论,来说两句吧...

相关阅读

    相关 一个javaweb登录界面

    好的,我来为你写一个 Java Web 登录界面。 首先,你需要在 HTML 中创建一个表单,其中包含用户名和密码输入框以及登录按钮: <form action="

    相关 django一个注册登录界面

    一、基于sb-admin模板完成以下登录的逻辑 用户想要访问一个网页,首先要求注册账号,有了账号之后再去登录,才能访问网站的主页 1.先说以下用户注册的逻辑: r