django 自带认证系统(login,logout,authenticate,login_required)

from django.contrib.auth import login,authenticate,logout
from django.contrib.auth.decorators import login_required

setting.py
AUTH_USER_MODEL = 'mytest.User'         #app名字.表名字
LOGIN_URL="/mytest/login/"              #如果没有登录,将会返回的url,用于装饰器 @login_required()

model.py(重构User model)
from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.
class User(AbstractUser):
nickname = models.CharField(max_length=50, blank=True)

class Meta(AbstractUser.Meta):
verbose_name = "用户信息"
verbose_name_plural = verbose_name

def __str__(self):
return self.username

view.py
def acc_login(req):
if req.method == "GET":
return render(req,"acc_login.html")
else:
email=req.POST.get("acc")
pwd=req.POST.get("pwd")
print("user:%s-%s" % (email,pwd))
user=authenticate(username=email,password=pwd)#验证:返回验证对象,失败则是None,成功返回username
print("user:%s"%user)
if user:
login(req,user)
# next_url = req.GET.get("next", '../index')
# return redirect(next_url)
return redirect("/mytest/index/")
else:
error="账号或者密码错误"
return render(req, "acc_login.html",{'error':error})

def acc_logout(req):
logout(req)
return redirect("/mytest/login/")

@login_required()
def index(request):
context = {"key": "ok"}
return render(request,'index.html',context)



# 关于User model 密码,需要用 set_password
def test_create(req):
user = models.User(
username='jam',
nickname= 'jam'
)
user.set_password('1234')
return HttpResponse("ok")

转载于:https://www.cnblogs.com/zhang-dan/p/11301552.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是详细的步骤和示例代码: 1. 创建Django项目并启动服务器 在控制台中进入你想要创建项目的目录下,输入以下命令创建Django项目: ``` django-admin startproject myproject ``` 然后进入myproject目录并启动服务器: ``` cd myproject python manage.py runserver ``` 2. 创建一个应用app 在myproject目录下,输入以下命令创建一个名为myapp的应用: ``` python manage.py startapp myapp ``` 3. 创建登录页面 在myapp目录下创建一个名为templates的文件夹,然后在其中创建login.html文件,代码如下: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <h2>Login</h2> <form method="post"> {% csrf_token %} <label for="username">Username:</label> <input type="text" name="username" required> <br> <label for="password">Password:</label> <input type="password" name="password" required> <br> <input type="submit" value="Login"> </form> </body> </html> ``` 4. 创建视图函数 在myapp目录下打开views.py文件并添加以下代码: ```python from django.shortcuts import render, redirect from django.contrib.auth import authenticate, login, logout def login_view(request): if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('home') else: return render(request, 'login.html', {'error': 'Invalid username or password.'}) else: return render(request, 'login.html') ``` 在这个视图函数中,我们首先判断请求方法是否为POST,如果是,则获取用户名和密码,然后使用authenticate()函数进行验证,如果验证通过,则使用login()函数进行登录,并重定向到首页,否则返回登录页面并显示错误信息。如果请求方法不是POST,则直接返回登录页面。 5. 创建URL映射 在myapp目录下打开urls.py文件并添加以下代码: ```python from django.urls import path from . import views urlpatterns = [ path('login/', views.login_view, name='login'), ] ``` 这个URL映射指向了我们刚刚创建的login_view视图函数。 6. 创建首页 在myapp目录下创建一个名为templates的文件夹,然后在其中创建home.html文件,代码如下: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Home</title> </head> <body> <h2>Welcome, {{ user.username }}!</h2> <form action="{% url 'logout' %}" method="post"> {% csrf_token %} <input type="submit" value="Logout"> </form> </body> </html> ``` 这个页面用来显示欢迎信息和一个登出按钮。 7. 创建登出功能 在myapp目录下打开views.py文件并添加以下代码: ```python def logout_view(request): logout(request) return redirect('login') ``` 这个视图函数使用logout()函数来登出用户,并重定向到登录页面。 8. 创建URL映射 在myapp目录下打开urls.py文件并添加以下代码: ```python from django.urls import path from . import views urlpatterns = [ path('login/', views.login_view, name='login'), path('logout/', views.logout_view, name='logout'), ] ``` 这个URL映射指向了我们刚刚创建的logout_view视图函数。 9. 测试登录和登出功能 现在我们可以在浏览器中访问http://localhost:8000/login/来进入登录页面进行登录,如果登录成功,则会重定向到首页http://localhost:8000/并显示欢迎信息和一个登出按钮。点击登出按钮后,会退出登录并重定向到登录页面。 以上就是使用Django内置的loginlogout函数实现登录登出功能的详细步骤和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值