学习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