Django实现auth模块下的登录注册与注销功能

看了好多登录注册和注销的教程,很乱,很迷,然后总结了一下,简单的做了一个登录,注册和注销的页面。

1,首先,使用pycharm创建一个项目

单击File —> 选中Django —> 在右侧Location选中所需的路径,或直接在框里命名

2,现在,你有了一个Django项目

你需要单击左下方的Terminal

创建一个app,命令:python  manage.py startapp Myapp(命名不做要求)

创建一个存放静态文件的文件夹:static(默认为该命名)

项目如下:

3,在Waste下:

settings.py:

INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  # 激活app
  'Myapp'
]

# 更改数据库连接
DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'HOST' : 'localhost',
    'PORT' : 3306,
    'NAME' : 'mysql',
    'USER': 'root',
    'PASSWORD' : '123456'
  }
}
# 汉语与时区

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

# 静态文件夹路径
STATIC_URL = '/static/'

STATICFILES_DIRS = [
  os.path.join(BASE_DIR,'static'),
]

在urls.py下:

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

urlpatterns = [
  path('admin/', admin.site.urls),
  #更改url匹配,定向到myApp的urls中,当主机地址后面参数时,到myApp中找链接
  path('',include('Myapp.urls'))
]

关闭这俩文件,因为我们基本用不到了。

4,在Myapp下:

新建urls.py,项目如下:

__init__.py:设置数据库连接

import pymysql
pymysql.install_as_MySQLdb()

urls.py:

from django.urls import path
from . import views

urlpatterns = [
  #主页,用来显示类别等其他数据
  path('',views.index),
  # 登录
  path('tologin/',views.tologin),
  # 注册
  path('register/',views.register),
  # 注销
  path('lagout/',views.lagout),
]

views.py:

from django.shortcuts import render, redirect
from django.http import HttpResponseRedirect
from django.contrib.auth.models import User
from django.contrib.auth import authenticate,login,logout
from django.contrib.auth.models import AnonymousUser

# Create your views here.
# 主页
def index(request,):
  username = request.user
  return render(request,'Myapp/index.html',locals())

# 登录
def tologin(request):
  if request.method == 'POST' and request.POST:
    data = request.POST
    username = data.get('username')
    password = data.get('password')
    n = authenticate(username=username,password=password)
    if n:
      # 登陆成功即可获取当前登录用户,返回主页
      login(request,user=n)
      return redirect('/')
  # 失败重定向到登录页
  return render(request, 'myApp/login.html')

# 注册
def register(request):
  if request.method == 'POST' and request.POST:
    data = request.POST
    username = data.get("username")
    password = data.get("password")
    # 校验注册,名字不可重复
    u = User.objects.filter(username=username).first()
    if u:
      info = '该用户名已被注册'
      return render(request,'Myapp/ERROR.html',{'info':info})
    else:
      # 注册成功,创建用户
      User.objects.create_user(
        username=username,
        password=password
      )
      # 重定向到登录页面
      return HttpResponseRedirect('/tologin/')
  # 注册失败,重新注册
  return render(request,'Myapp/register.html')

def lagout(request):
  logout(request)
  return redirect('/')

因为用的是auth组件,所以这个模型可以不写

5,回到Terminal

执行生成迁移文件:python manager.py makemigrations

生成迁移:python manager.py migrate

6,简陋的html

ERROR.html:用来提示错误,任何页面的错误,向该页面传入错误信息info即可

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>ERROR</title>
</head>
<body>
{{ info }}
</body>
</html>

index.html:主页,欢迎用户,无用户显示为游客,为什么是游客,不是AnonymousUser,后面讲

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>主页</title>
</head>
<body>

  你好,{{ username }}
  <a href="{{ " rel="external nofollow" rel="external nofollow" rel="external nofollow" lagout/" }}">注销</a>
  <a href="{{ " rel="external nofollow" rel="external nofollow" rel="external nofollow" tologin/" }}">登录</a>
  <a href="{{ " rel="external nofollow" rel="external nofollow" rel="external nofollow" register/" }}">注册</a>

</body>
</html>

login.html :登录,简陋,emmm

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>登录</title>
</head>
<body>
<form method="post">
    {% csrf_token %}
    <p>
      用户名:<input type="text" name="username" >
    </p>
    <p>
      密  码:<input type="password" name="password" >
    </p>
    <p>
      <input type="submit" value="登录">
       
      <input type="reset" value="取消">
    </p>
  </form>
</body>
</html>

register:注册:简陋,too

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>注册</title>
</head>
<body>
<form method="post">
    {% csrf_token %}
    <p>
      用户名:<input type="text" name="username" >
    </p>
    <p>
      密  码:<input type="password" name="password" >
    </p>
    <p>
      <input type="submit" value="注册">
       
      <input type="reset" value="取消">
    </p>
  </form>
</body>
</html>

然后,一般,我们用auth组件,如果没有登录,它会这样显示:

但是,它很突兀,很难受,为什么是英语?什么意思?对不对,就想改。那就改呗

在我的views.py里的最后一个import是无用引用,ctrl加鼠标右键点击AnonymousUser,查看AnonymousUser源码:

改成:

即可:

7,测试:

运行命令:python manager.py runserver,不是点击三角形哦。

注册成功跳转登录

跳转登录,登录后转首页,且欢迎当前用户

注销,成功注销后回首页,且欢迎游客

最后,注册已有用户名报错

总结

以上所述是小编给大家介绍的Django实现auth模块下的登录注册与注销功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • DJANGO-ALLAUTH社交用户系统的安装配置

    DJANGO-ALLAUTH是github上面排名较高的django user系统.本来通过对比是想选用django-userea的,可是博主智商不够看懂它的安装配置文档.....搞乱了一个测试项目之后,只好作罢.好在allauth安装配置相对简单.但是它的文档写得更乱...很多关键信息居然是在常见问题里面找到...记录下来备忘. 1.安装: 复制代码 代码如下: pip install django-allauth 2.配置 settings.py 复制代码 代码如下: TEMPLATE_CO

  • 详解Django之auth模块(用户认证)

    auth模块简介 auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象, 而有了auth模块之后就可以很轻松的去验证用户的登录信息是否存在于数据库中. 除此之外,auth还对session做了一些封装,方便我们校验用户是否已登录 auth里的方法 如果想使用auth模块的方法,必须要先导入auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法

  • 详解Django-auth-ldap 配置方法

    使用场景 公司内部使用Django作为后端服务框架的Web服务,当需要使用公司内部搭建的Ldap 或者 Windows 的AD服务器作为Web登录认证系统时,就需要这个Django-auth-ldap第三方插件 插件介绍 Django-auth-ldap是一个Django身份验证后端,可以针对LDAP服务进行身份验证.有许多丰富的配置选项可用于处理用户,组和权限,便于对页面和后台的控制 插件介绍地址:Django-auth-ldap 安装方法 注意:需先正确安装python3环境.pip3 和

  • django用户注册、登录、注销和用户扩展的示例

    用户部分是一个网站的基本功能,django对这部分进行了很好的封装,我们只需要在django的基础上做些简单的修改就可以达到我们想要的效果 首先我假设你对django的session.cookie和数据库.admin部分都有一定的了解,不了解的可以参考这个教程:http://djangobook.py3k.cn/2.0/ 1.用户登录: 首先假设有这样的登录界面: 处理登录的视图代码如下: def userLogin(request): curtime=time.strftime("%Y-%m-

  • django接入新浪微博OAuth的方法

    本文实例讲述了django接入新浪微博OAuth的方法.分享给大家供大家参考.具体分析如下: 最近将网站和新浪微博进行了整合,思路很简单,就是将页面内容和新浪微博联系起来,一个独立内容的页面对于一条微博,自然评论系统只需要使用微博的评论即可. 然后,用户需要发表评论的话,肯定要接入oauth,不可能让用户登录你的网站来发评论吧?没有谁会将自己的账号和密码告诉你的. 查看了新浪微博的授权机制,然后下载了python版的sdk,就可以在django上接入oauth了. 对于oauth很陌生的同学,请

  • Django实现auth模块下的登录注册与注销功能

    看了好多登录注册和注销的教程,很乱,很迷,然后总结了一下,简单的做了一个登录,注册和注销的页面. 1,首先,使用pycharm创建一个项目 单击File -> 选中Django -> 在右侧Location选中所需的路径,或直接在框里命名 2,现在,你有了一个Django项目 你需要单击左下方的Terminal 创建一个app,命令:python  manage.py startapp Myapp(命名不做要求) 创建一个存放静态文件的文件夹:static(默认为该命名) 项目如下: 3,在W

  • django框架auth模块用法实例详解

    本文实例讲述了django框架auth模块用法.分享给大家供大家参考,具体如下: auth模块的导入 from django.contrib import auth django中的auth模块有其自己完整的一套方法: 登录验证.注销.用户的创建.比较用户输入的密码是否和数据库的一致.用户信息的修改 1 我们来生成db.sqlite3 (migrations,migrate),打开,从中我们可以找到表 auth_user ,整篇都是围绕这个表进行的 2  这个表里面暂时是空的,我们可以创建 ,例

  • SSM框架下实现登录注册的示例代码

    基本配置:jdk1.8   tomcat 8  MyEclipse 先打好地基: spring配置文件 application.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-

  • django中的auth模块与admin后台管理方法

    目录 1. auth模块 1.1 auth模块的常用方法 1.2 如何扩展auth_user表 2.admin后台管理 2.1 admin后台管理的准备工作 2.2 为admin后台设置样式和增加数据 1. auth模块 auth模块是对登录认证方法的一种封装,本身就是一个对象,可以获取用户的详细信息,有了auth模块可以验证登录信息是否存在数据库中,还可以检验用户是否已经登录,校验密码等. 在创建完django项目之后,执行数据库迁移之后,数据库里会增加很多新表,其中有一张名为auth_use

  • Django框架CBV装饰器中间件auth模块CSRF跨站请求问题

    CBV添加装饰器 给CBV添加装饰器有三种方法,三种方法都需要导入模块: from django.utils.decorators import method_decorator 第一种直接在方法上面添加: from django.utils.decorators import method_decorator class MyLogin(View): @method_decorator(auth) def get(self, request): return HttpResponse('Is

  • django的登录注册系统的示例代码

    摘要 django框架本身自带有登录注册,也可以自己写登录注册,下面将介绍这这2种方式实登录注册 一.自己写登录注册登出 1.注册regist 注册采用的是form表单,提交到数据库,在登录的时候,查询数据看,看用户有没有注册,如果用户没有注册,则返回注册页面注册 (1)models.py文件里创建相关的字段: 用户名字/用户密码/cookies携带的ticket from django.db import models # Create your models here. class User

  • IOS开发用户登录注册模块所遇到的问题

    最近和另外一位同事负责公司登录和用户中心模块的开发工作,开发周期计划两周,减去和产品和接口的协调时间,再减去由于原型图和接口的问题,导致强迫症纠结症状高发,情绪不稳定耗费的时间,能在两周基本完成也算是个不小的奇迹了.本文就总结一下如何满足产品需要的情况下,高效开发一个登录注册模块. 1.利用继承解决界面重复性功能.通常登录注册会有一个独立的设计,而模块内部会有有相似的背景,相似的导航栏样式,相似返回和退出行为,相似的输入框,按钮样式等. 比如上面的的注册和登录模块,就有相同的返回按钮,相同的背景

  • vue3如何优雅的实现移动端登录注册模块

    前言 近期开发的移动端项目直接上了 vue3 ,新特性 composition api 确实带来了全新的开发体验.开发者在使用这些特性时可以将高耦合的状态和方法放在一起统一管理,并能视具体情况将高度复用的逻辑代码单独封装起来,这对提升整体代码架构的健壮性很有帮助. 如今新启动的每个移动端项目基本上都包含注册登录模块,本次实践过程中针对登录注册中的表单控件做了一些经验上的总结,通过抽离提取共性代码来提升代码的可维护性和开发效率. 接下来观察一下美工同学提供的图片. 注册页面 登录页面 忘记密码页面

  • JS实现下拉菜单列表与登录注册弹窗效果

    下拉菜单列表 <style> *{ margin: 0px; padding: 0px; } .menu{ width: 1100px; height: 30px; background-image: url(img/魅力罗兰Music炫图18.jpg); margin-left: 200px; margin-top: 50px; } .btn{ width: 183.3px; height: 30px; float: left; text-align: center; line-height

随机推荐