多语言展示
当前在线:579今日阅读:26今日分享:39

Django中CSRF_TOKEN和Cookie和Session实例浅析

Django中CSRF_TOKEN和Cookie和Session实例浅析,Django自带CSRF防护机制,每个会话期间CSRF_TOKEN不变,CSRF_TOKEN存在Cookie中。
工具/原料

PyCharm

方法/步骤
1

在windows命令行窗口创建django工程,并创建应用,前提是电脑装好了python3及Django,命令如下:django-admin startproject djcsrfcd djcsrfpython mange.py startapp book

2

使用PyCharm打开工程,在book应用文件夹的models.py文件,编写模型类,代码如下:from django.db import models# Create your models here.class BookInfo(models.Model):    name = models.CharField(max_length=20)    author = models.CharField(max_length=10)

3

在PyCharm中打开终端,生成数据库迁移文件,进行数据库迁移python manage.py makemigrationspython manage.py migrate

4

在book应用文件夹,创建forms.py文件,在forms.py中编写表单类,代码如下:from django import formsfrom .models import BookInfoclass BookInfoForm(forms.ModelForm):    class Meta:        model = BookInfo        fields = ('name','author')这个表单类对应第2步的模型类,展示name和author两个字段

5

在django工程根目录,创建templates文件夹,文件夹创建‘bookinfo.html’内容如下:        Title    

       {% csrf_token %}        {{bk}}            
{% csrf_token %}是因为默认django是不允许post数据,加上这个就可以了,会生成一个随机token字符串存储在cookie,看下面步骤会看到

6

在book应用文件夹的views.py文件,编写视图函数,代码如下:from django.shortcuts import renderfrom .forms import BookInfoFormfrom django.http import HttpResponse# Create your views here.def bookform(request):    if request.method=='GET':        bk = BookInfoForm()        request.session['my'] = 'hi'        return render(request,'bookinfo.html',{'bk':bk})    else:        response= HttpResponse('1')        print(request.session.get('my'))        response.set_cookie('hello','world',60)        return response1、这里在GET请求时候设置session,在POST请求时读取session,浏览器的Cookie中保存sessionID2、在POST请求时候设置一个Cookie

7

在book应用文件夹创建urls.py文件,urls.py代码如下:from django.conf.urls import urlfrom . import viewsurlpatterns = [    url(r'bookinfo/',views.bookform),]

8

在工程的urls.py文件中编写代码,包含book应用的urls.py文件,工程的urls.py文件如下:from django.conf.urls import url,includefrom django.contrib import adminurlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'book/',include('book.urls')),]

9

运行django服务器python manage.py runserver

10

浏览器输入网址访问http://127.0.0.1:8000/book/bookinfo/

11

提交数据后,在开发者工具-application-cookie如下,这样加强理解token、cookie、session机制

推荐信息