Django学习二
Django学习二
一、实现登录注册思路:
二、步骤
1.创建模型类
from django.db import models
class UserModel(models.Model):
username=models.CharField(max_length=30,unique=True)
password=models.CharField(max_length=100)
email=models.EmailField()
makemigrations shuju(app名)创建模型类
migrate shuju(app名)提交
2.创建登录/注册模板(html)
2.1创建一个forms.py文件,使用Django中的forms生成form表单
from django import forms
class RegisterFrom(forms.Form):
username=forms.CharField(max_length=20,min_length=6)
password=forms.CharField(max_length=8,min_length=6,
widget=forms.PasswordInput(
attrs={'placeholder':'请输入密码'}),
error_messages={'min_length':'密码长度小于6',
'max_length':'密码长度超过8位'})
password_repeat=forms.CharField(widget=forms.PasswordInput())
email=forms.EmailField()
class LoginForm(forms.Form):
username=forms.CharField(max_length=20,min_length=6)
password=forms.CharField(max_length=8,min_length=6,
widget=forms.PasswordInput())
2.2注册页面
2.3登录页面
2.4主页
3.创建视图函数:
3.1注册存储数据,登录保存状态
from django.views import View
from django.http import HttpResponse
from django.shortcuts import render,reverse,redirect
from .forms import RegisterFrom,LoginForm
from .models import UserModel
def home1(request):
return render(request,'search_form.html')
def home(request):
name=request.session.get('username','请先登录')
return render(request,'shuju/home.html',
context={'name':name})
class LoginView1(View):
def get(self,request):
return render(request,'shuju/login.html')
def post(self,request):
username=request.POST.get('username')
request.session['username']=username
return redirect(reverse('home'))
def logout(request):
request.session.flush()
return redirect(reverse('home'))
class RegisterView(View):
def get(self,request):
form=RegisterFrom()
return render(request,'shuju/register.html',
context={'form':form,
})
def post(self,request):
form =RegisterFrom(request.POST)
if form.is_valid():
username=form.cleaned_data.get('username')
password=form.cleaned_data.get('password')
password_repeat = form.cleaned_data.get('password_repeat')
email = form.cleaned_data.get('email')
if password==password_repeat:
user=UserModel.objects.create(username=username,
password=password,
email=email)
return HttpResponse('注册成功')
else:
return HttpResponse('注册失败')
else:
return HttpResponse('注册失败')
class LoginView2(View):
def get(self,request):
form=LoginForm()
return render(request,'shuju/login_new.html',
context={
'form':form,
})
def post(self,request):
form=LoginForm(request.POST)
if form.is_valid():
username=form.cleaned_data.get('username')
password=form.cleaned_data.get('password')
user=UserModel.objects.filter(username=username,
password=password)
if user:
request.session['username'] = username
return redirect(reverse('home'))
else:
return redirect(reverse('register'))
4.配置url
from django.urls import path,include
from . import views
urlpatterns = [
path('home/', views.home, name='home'),
path('login1/', views.LoginView1.as_view(), name='login1'),
path('login2/', views.LoginView2.as_view(), name='login2'),
path('logout/', views.logout, name='logout'),
path('register/', views.RegisterView.as_view(), name='register'),
]