Django实现用户注册、登录、退出

1,736 阅读8分钟
原文链接: www.javazhiyin.com

Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。

Django是一个开放源代码的Web应用框架,由Python写成。

我们使用Django来实现用户注册、登录、退出,下面贴出一个具体代码实现:

1用户注册

from django.contrib import auth
from django.contrib.auth.models import User
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponseRedirect
 
# 用户注册
@csrf_exempt
def register(request):
    errors = []
    account = None
    password = None
    password2 = None
    email = None
    CompareFlag = False
 
    if request.method == 'POST':
        if not request.POST.get('account'):
            errors.append('用户名不能为空')
        else:
            account = request.POST.get('account')
 
        if not request.POST.get('password'):
            errors.append('密码不能为空')
        else:
            password = request.POST.get('password')
        if not request.POST.get('password2'):
            errors.append('确认密码不能为空')
        else:
            password2 = request.POST.get('password2')
        if not request.POST.get('email'):
            errors.append('邮箱不能为空')
        else:
            email = request.POST.get('email')
 
        if password is not None:
            if password == password2:
                CompareFlag = True
            else:
                errors.append('两次输入密码不一致')
 
        if account is not None and password is not None and password2 is not None and email is not None and CompareFlag :
            user = User.objects.create_user(account,email,password)
            user.save()
 
            userlogin = auth.authenticate(username = account,password = password)
            auth.login(request,userlogin)
            return HttpResponseRedirect('/blog')
 
    return render(request,'blog/register.html', {'errors': errors})

2 用户登录:

@csrf_exempt
def my_login(request):
    errors =[]
    account = None
    password = None
    if request.method == "POST":
        if not request.POST.get('account'):
            errors.append('用户名不能为空')
        else:
            account = request.POST.get('account')
 
        if not request.POST.get('password'):
            errors = request.POST.get('密码不能为空')
        else:
            password = request.POST.get('password')
 
        if account is not None and password is not None:
            user = auth.authenticate(username=account,password=password)
            if user is not None:
                if user.is_active:
                    auth.login(request,user)
                    return HttpResponseRedirect('/blog')
                else:
                    errors.append('用户名错误')
            else:
                errors.append('用户名或密码错误')
    return render(request,'blog/login.html', {'errors': errors})

3 用户退出:

def my_logout(request):
    auth.logout(request)
    return HttpResponseRedirect('/blog')

URL:

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^p/(?P<article_id>[0-9]+)/$', views.detail,name='detail'),
    url(r'^register/$',views.register, name='register'),
    url(r'^login/$',views.my_login, name='my_login'),
    url(r'^logout/$',views.my_logout, name='my_logout'),
]

注册 HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
 
{% if errors %}
        <li>
 
            {% for error in errors %}
             <p style="color: red;">
                {{error}}
             </p>
              {% endfor %}
        </li>
    {% endif %}
<table>
    <form action="" method="post">{% csrf_token %}
 
        <tr>
            <td>
                <label >用户名:</label>
            </td>
            <td>
                <input type = 'text' placeholder="输入用户名" name = 'account'>
            </td>
        </tr>
        <tr>
            <td>
                <label >密码:</label>
            </td>
            <td>
              <input type = 'password' placeholder="输入密码" name = 'password'>
            </td>
        </tr>
         <tr>
             <td>
                <label >确认密码:</label>
             </td>
             <td>
                 <input type = 'password' placeholder="再次输入密码" name ='password2'>
             </td>
 
         </tr>
         <tr>
             <td>
                 <label>邮箱:</label>
             </td>
             <td>
                 <input type="email" placeholder="输入邮箱" name = 'email'>
             </td>
         </tr>
          <tr>
 
              <td>
                   <input type = 'submit' placeholder="Login" value="登录">
              </td>
          </tr>
    </form>
</table>
</body>
</html>

登录HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
 
{% if errors %}
        <li>
 
            {% for error in errors %}
             <p style="color: red;">
                {{error}}
             </p>
              {% endfor %}
        </li>
    {% endif %}
<table>
    <form action="" method="post">{% csrf_token %}
 
        <tr>
            <td>
                <label >用户名:</label>
            </td>
            <td>
                <input type = 'text' placeholder="输入用户名" name = 'account'>
            </td>
        </tr>
        <tr>
            <td>
                <label >密码:</label>
            </td>
            <td>
              <input type = 'password' placeholder="输入密码" name = 'password'>
            </td>
        </tr>
 
          <tr>
 
              <td>
                   <input type = 'submit' placeholder="Login" value="登录">
              </td>
          </tr>
    </form>
</table>
</body>
</html>
</body>
</html>

 

 

参考:https://blog.csdn.net/weixin_42181824/article/details/81088037

0

更多同类文章推荐:

  1. Python学习-Flask表单提交的方法
  2. Python学习-Flask实现用户登录功能
  3. Python学习-Flask实现分页功能
  4. Python学习-python如何将数据保存到本地json文件
  5. Python学习-Flask蓝图使用的方法
  6. Python学习-Flask消息闪现及日志记录
  7. Python学习-Flask使用ajax进行前后端交互
  8. Python学习-Flask实现图片的上传、下载及展示