学习Django实战笔记之注册用户功能

学习Django实战笔记之注册用户功能

1、创建工程

django-admin startproject mysite6

2、配置mysql数据库

3、创建数据库mysite6_db

create database mysite6_db default charset utf8 collate utf8_general_ci;

4、配置mysite6/settings.py的DATABASE

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysite6',  # 数据库名称,需要自己定义
        'USER': 'root',# 数据库用户名
        'PASSWORD': '123456',  # 数据库密码
        'HOST': '127.0.0.1',#数据库地址
        'PORT': 3306,
    }
}

在mysite6/_init_.py 添加pymysql支持

import pymysql
pymysql.install_as_MySQLdb()

5、创建应用user、并注册

python manage.py startapp user

6、settings.py添加注册app user

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'user', # 就是这个拉
]

7、编写模型类

/user/models.py

from django.db import models


# Create your models here.
class User(models.Model):
    username = models.CharField("用户名", max_length=30, unique=True)
    password = models.CharField("密码", max_length=30)

    def __str__(self):
        return "用户" + self.username

8、迁移操作

python manage.py makemigrations
python manage.py migrate

9、添加注册功能

创建模板

模板: templates/user/register.html

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
    <style>
        div >span{
            color: red;
        }
        div > label{
            display: inline-block;
            width: 80px;
        }
    </style>
</head>
<body>
<form action="/user/reg" method="post">
    <div>
        <label>用户名</label>
        <input type="text" name="username" value="{{ username }}">
        <span>{{ username_error }}</span>
    </div>
    <div>
        <label>密码</label>
        <input type="password" name="password" value="{{ password }}">
        <span>{{ password_error }}</span>
    </div>
    <div>
        <label>密码(重复)</label>
        <input type="password" name="password2" value="{{ password2 }}">
        <span>{{ password2_error }}</span>
    </div>
    <div>
        <input type="submit" value="注册">
    </div>



</form>
</body>
</html>
添加分布式路由
# mysite6/urls.py
from django.contrib import admin
from django.urls import path
from django.urls import include

urlpatterns = [
    path('admin/', admin.site.urls),
    path(r'user/', include('user.urls'))
]

# user/urls.py
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path(r'reg', views.reg_view),
]

10、编写视图处理函数

from django.shortcuts import render
# Create your views here.
def reg_view(request):
    if request.method == 'GET':
        return render(request, 'user/register.html')
    elif request.method == 'POST':
    #验证用户名不能太短
    #验证密码1不能为空
    #验证两次密码必须一致
    #检查数据库是否已有username这条记录,如果没有则完成注册
    #添加用户名密码
    #添加cookies
		username = request.POST.get('username', '')
        password = request.POST.get('password', '')
        password2 = request.POST.get('password2', '')
        if len(username) < 6:
            username_error = '用户名至少为6个字节'
            return render(request, 'user/register.html', locals())
        if len(username) == 0:
            username_error = '用户名不能为空'
            return render(request, 'user/register.html', locals())
        if len(password) == 0:
            password_error = '密码不能为空'
            return render(request, 'user/register.html', locals())
        if password != password2:
            password2_error = '密码不一致'
            return render(request, 'user/register.html', locals())

        try:
            auser = models.User.objects.get(username__exact=username)
            username_error = '用户名已存在'
            return render(request, 'user/register.html', locals())
        except:
            adduser = models.User.objects.create()
            adduser.username = username
            adduser.password = password
            adduser.save()
            html = '注册成功!'
            res = HttpResponse(html)
            res.set_cookie('username', username)
            return res

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值