cookie,session,django的form

  • JsonResponse 是 HttpResponse 的子类,可以返回Json的键值对 例如 {‘a’:‘1’}
cookie 在django中可以存储数据,存储于客户端中,不安全
urls.py中


from django.urls import path, include

from . import views

urlpatterns = [
    path('setck/', views.set_cook),
    path('getck/', views.get_cook),
    path('deleteck/', views.delete_cook),

]




views.py中

# 设置 cookie cookie一般存储数据在客户端
import datetime

# max_age 和 expires 都是设置过期时间
def set_cook(request):

    rs = HttpResponse('设置cookie')
    # rs.set_cookie('name', 'liping', max_age=1000)
    rs.set_cookie('name', 'liping', expires=datetime.datetime(2019,9,9))
    return rs



# 获取cookie
def get_cook(request):

    rs = request.COOKIES
    print(rs.get('name'))

    return HttpResponse('获取cookie')



# 删除cookie
def delete_cook(request):

    rs = HttpResponse('删除cookie')
    rs.delete_cookie('name')
    return rs
session 在django中也可以存储状态数据,存于服务器中,相对安全
urls.py中

from django.urls import path
from . import views

urlpatterns = [


    path('login/', views.Login.as_view(), name='clsLogin'),
    path('home/', views.home, name='home'),
    path('loginOut/', views.loginOut, name='loginOut'),


]




views.py中

from django.shortcuts import render, redirect, reverse
from django.views import View
from django.http import HttpResponse


class Login(View):

    def get(self, request):

        return render(request, 'formTest/login.html')


    def post(self, request):

        userName = request.POST.get('userName')
        request.session['username'] = userName
        request.session.set_expiry(None)#设置过期时间 如果写None就是默认两个星期
        return redirect(reverse('home'))




def home(request):

    userName = request.session.get('username')
    return render(request, 'formTest/home.html', context={


        'username':userName

    })



def loginOut(request):

    request.session.flush()#清除session中的数据

    return redirect(reverse('home'))

    
    
    
模版 home.html中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>


{{ username }}


</body>
</html>
    
    


模版 login.html 中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>


<form action="" method="post">

    {% csrf_token %}

    <input type="text" name="userName">
    <input type="submit" value="登录">


</form>


</body>
</html>
django中的自带form表单
在models.py中创建一个表的类 用于存放数据


from django.db import models


class UserModel(models.Model):

    userName = models.CharField(max_length=30, unique=True,)#unique 唯一
    passWord = models.CharField(max_length=100)
    email = models.EmailField()


    def __str__(self):

        return 'userName={}, passWord={}, email={}'.format(self.userName, self.passWord, self.email)
        
        
        
新建一个form.py文件,这就是django中的form



from django import forms


新建一个类 里面写一些显示的内容
class RegisterForm(forms.Form):

    userName = forms.CharField(max_length=30, min_length=6)
    passWord = forms.CharField(max_length=30, min_length=6, widget=forms.PasswordInput(attrs={'placeholder':'请输入密码'}))
    passReplaceLLL = forms.CharField(max_length=30, min_length=6, widget=forms.PasswordInput(attrs={'placeholder':'请再次输入密码'}))
    email = forms.EmailField()
    
    
    
views.py中

导入新建的模型表和form
from .models import UserModel
from .forms import RegisterForm

class Register(View):

    def get(self, request):

        实例化form表类
        form = RegisterForm()

        用上下文传给模版
        return render(request, 'formTest/register.html', context={


            'form':form

        })



    def post(self, request):
        
        获取form里面的数据,进行逻辑操作
        form = RegisterForm(request.POST) #获取form表单数据
        if form.is_valid():
            username = form.cleaned_data.get('userName')
            password = form.cleaned_data.get('passWord')
            passreplace = form.cleaned_data.get('passReplaceLLL')
            email = form.cleaned_data.get('email')
            print(password.encode(encoding='UTF-8'))


            dataName = UserModel.objects.filter(userName=username)
            print(dataName)
            if dataName:
                return HttpResponse('该用户已经存在')
            else:

                if password == passreplace:
                    UserModel.objects.get_or_create(userName=username, passWord=password, email=email)
                    return HttpResponse('注册成功')
                else:
                    return HttpResponse('两次密码不一致,请重新输入')


        else:
            return HttpResponse('输入数据不合法')


    

模版 register.html中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
</head>
<body>



<form action="" method="post">


    {% csrf_token %}

    显示form传来的数据
    {{ form.as_p }}

    <input type="submit" value="注册">


</form>



</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值