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'),
]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值