慕课网-Django入门到进阶-更适合Python小白的系统课程-第7章Django中的用户权限的基本使用-7-3用户的创建登录注销验证(3)

第7章 Django 中的用户权限的基本使用

7-3 用户的创建登录注销验证(3)

1.在项目 user 下目录 templates,修改文件 regist.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
    <style>
        #edit-area {
            width: 35%;
            margin: 0 auto;
            margin-top: 100px;
        }

        input {
            display: block;
            width: 100%;
        }

        #submit,#reset {
            width: 40px;
            display: inline-block;
        }

        #reset {
            float: right;
        }
    </style>
</head>
<body>
    <form id="edit-area" action="{% url 'regist' %}" method="POST">
        {% csrf_token %}
        <input name="username" type="text" placeholder="用户名" />
        <input name="password" type="password" placeholder="密码" />
        <input name="check_password" type="password" placeholder="确认密码" />
        <input id="submit" type="submit" value="提交" />
        <input id="reset" type="reset" value="重置">
        {{error}}
    </form>
</body>
</html>

2.在项目 user 下目录 app,修改文件 views.py

#coding:utf-8

from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
from django.shortcuts import render, redirect
from django.views import View

class Regist(View):
    TEMPLATE = 'regist.html'

    def get(self, request):
        error = request.GET.get('error', '')
        return render(request, self.TEMPLATE, {'error':error})

    def post(self, request):
        username = request.POST.get('username')
        password = request.POST.get('password')
        check_password = request.POST.get('check_password')
        if password != check_password:
            return redirect('/regist?error=密码不相同')

        exists = User.objects.filter(username=username).exists()
        if exists:
            return redirect('/regist?error=该用户已存在')

        # hash_password = make_password(password)
        user = User.objects.create_user(
            username=username,
            password=password
        )
        user.save()
        return redirect('/regist')

class Login(View):
    TEMPLATE = 'login.html'
    
    def get(self, request):
        return render(request, self.TEMPLATE)

3.在项目 user 下目录 templates,新增文件 login.html

4.在项目 user 下目录 app,修改文件 views.py,添加类 Login

#coding:utf-8

from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
from django.shortcuts import render, redirect
from django.views import View

class Regist(View):
    TEMPLATE = 'regist.html'

    def get(self, request):
        error = request.GET.get('error', '')
        return render(request, self.TEMPLATE, {'error':error})

    def post(self, request):
        username = request.POST.get('username')
        password = request.POST.get('password')
        check_password = request.POST.get('check_password')
        if password != check_password:
            return redirect('/regist?error=密码不相同')

        exists = User.objects.filter(username=username).exists()
        if exists:
            return redirect('/regist?error=该用户已存在')

        hash_password = make_password(password)
        user = User.objects.create_user(
            username=username,
            password=hash_password
        )
        user.save()
        return redirect('/regist')

class Login(View):
    TEMPLATE = 'login.html'
    
    def get(self, request):
        return render(request, self.TEMPLATE)

5.在项目 user 下目录 app,修改文件 urls.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from django.urls import path
from .views import Regist, Login

urlpatterns = [
    path('regist', Regist.as_view(), name='regist'),
    path('login', Login.as_view(), name='login'),
]

6.在项目 user 下目录 app,修改文件 views.py,添加 reverse

from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
from django.shortcuts import render, redirect, reverse
from django.views import View

class Regist(View):
    TEMPLATE = 'regist.html'

    def get(self, request):
        error = request.GET.get('error', '')
        return render(request, self.TEMPLATE, {'error':error})

    def post(self, request):
        username = request.POST.get('username')
        password = request.POST.get('password')
        check_password = request.POST.get('check_password')
        if password != check_password:
            return redirect('/regist?error=密码不相同')

        exists = User.objects.filter(username=username).exists()
        if exists:
            return redirect('/regist?error=该用户已存在')

        hash_password = make_password(password)
        user = User.objects.create_user(
            username=username,
            password=hash_password
        )
        user.save()
        return redirect(reverse('login'))

class Login(View):
    TEMPLATE = 'login.html'
    
    def get(self, request):
        return render(request, self.TEMPLATE)

7.在项目 user 下命令行窗口同步数据库

python manage.py makemigrations
python manage.py migrate

8.在项目 user 下命令行窗口启动服务

python manage.py runserver

9.在命令行窗口进入数据库界面

 

posted on 2020-02-12 09:20  herisson_pan  阅读(4)  评论(0)    收藏  举报

导航