栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用Django搭建博客第二天笔记--登录注册功能实现

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Django搭建博客第二天笔记--登录注册功能实现

一、数据表结构设计
项目应用account的模型MyUser是项目中的核心数据 它与每个项目应用的模型都存在数据关联。模型MyUser继承内置模型User 在内置模型User的基础上添加新的字段 用于完善用户信息。打开项目应用account的models.py定义模型MyUser 代码如下

class MyUser(AbstractUser):
 name models.CharField(verbose_name 姓名 ,max_length 50,default 匿名用户 )
 introduce models.TextField(verbose_name 简介 ,default 暂无介绍 )
 company models.CharField(verbose_name 公司 ,max_length 100,default 暂无信息 )
 profession models.CharField(verbose_name 职业 ,max_length 100,default 暂无信息 )
 address models.CharField(verbose_name 地址 , max_length 100, default 暂无信息 )
 telephone models.CharField(verbose_name 电话 , max_length 11, default 暂无信息 )
 wx models.CharField(verbose_name 微信 , max_length 50, default 暂无信息 )
 qq models.CharField(verbose_name qq ,max_length 50,default 暂无信息 )
 wb models.CharField(verbose_name 微博 , max_length 100, default 暂无信息 )
 photo models.ImageField(verbose_name 头像 , blank True,upload_to images/user/ )
 create_time models.DateTimeField(verbose_name 创建时间 , auto_now_add True)
 class meta:
 verbose_name 用户 
 verbose_name_plural verbose_name
 db_table MyUser 
 def __str__(self):
 return self.name

二、路由定义
采用路由下发的方式 我们在Myblog的urls.py下设置account的路由

# Myblog的 urls.py
urlpatterns [
 path( admin/ , admin.site.urls),
 path( user/ , include( app.account.urls )),
# account的 urls.py
urlpatterns [
 path( register , Register.as_view(), name register ),
 path( login , UserLogin.as_view(), name userLogin ),

三、编写视图类
我们在account创建一个一个forms.py用来创建UserForm类 用来进行表单认证

from django import forms
from django.forms import Form
from app.account.models import MyUser
from captcha.fields import CaptchaField
class UserForm(Form):
 username forms.CharField(
 widget forms.TextInput
 password forms.CharField(
 widget forms.PasswordInput
 cp forms.CharField(
 widget forms.PasswordInput,
 required False
 type forms.CharField(
 widget forms.TextInput
 captcha CaptchaField()
 def clean(self):
 username self.cleaned_data.get( username , )
 if self.cleaned_data.get( type , ) register :
 if not username:
 raise forms.ValidationError( 用户名不能为空 )
 else:
 user MyUser.objects.filter(username username).exists()
 if user:
 raise forms.ValidationError( 用户名已存在 )
 p self.cleaned_data.get( password , )
 cp self.cleaned_data.get( cp , )
 if p ! cp:
 raise forms.ValidationError( 两次密码不一致 )
 else:
 username : username,
 password : p,
 is_superuser : 1,
 is_staff : 1
 user MyUser.objects.create_user(**d)# create_user自动将明文密码hash加密
 user.save()
 else:
 if not username:
 raise forms.ValidationError( 用户名不能为空 )

在account的view.py添加如下代码

from django.shortcuts import render, redirect, reverse
from django.views.generic import View
from .forms import *
from django.contrib.auth import authenticate, login
from captcha.models import CaptchaStore
from captcha.helpers import captcha_image_url
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267817.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号