禁止CSRF校验实例

静态文件----提交表单

本例在static目录中建立了一个from.html静态页面,该页面有一个<form>标签,用于向服务端提交POST请求,然后在post.py脚本文件中添加一个路由方法,用于处理HTTP POST请求,

并返回请求字段值。

本实例涉及一个CSRF校验的问题,CSRF是Cross-site request forgery(跨站请求伪造)的缩写,CSRF校验就是为了防止CSRF攻击进行的校验。由于CSRF校验与本例无关。

所以使用@csrf_exempt装饰器将CSRF校验关闭


1、在Firstdjango工程项目中手工创建一个文件名为static


2、配置静态目录

在setting.py中找到STATIC_URL配置如下:

STATIC_URL = '/static/'
STATICFILES_DIRS = (
  os.path.join(BASE_DIR,"static"),
)


3、添加APP包名(项目名称)

在setting.py中找到INSTALLED_APPS添加App的包名(也就是项目名称)

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Firstdjango',            #新添加的APP名(项目名称)
]


4、在工程的Firstdjango目录中建立一个post.py脚本文件,然后在post.py文件中添加如下内容:

from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
#禁止CSRF校验
@csrf_exempt
def myPost(request):
    # 从HTTP POST请求中获取user字段
    user=str(request.POST.get('user'))
    # 从HTTP POST 请求中获取age字段值
    age=str(request.POST.get('age'))
    result='<h2>name:<font color="red">' + user +'</font></h2>'
    result+='<h2>age:<font color="blue">' + age +'</font></h2>'
    return HttpResponse(result)



5、然后在Firstdjango目录中找到urls.py脚本文件,用下面的代码代替urls.py脚本里面的内容:

from django.conf.urls import url
from .import post
urlpatterns=[
    #下面代码是本例添加的路由方法与正则表达式的映射
    url(r'^post$',post.myPost),
]



6、在静态文件static目录中中创建一个from.html静态页面,添加内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Form</title>
</head>
<body>
    <!-- 用于提交POST请求的Form表单-->
    <form action="/post" method="post">
        User:<input name="user"/><br>
        Age:<input name="age"/><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>


7、启动django工程


8、浏览器访问

http://127.0.0.1:8000/static/form.html


9、添加静态目录static、静态文件form.html位置如下图所示:
 

 

posted @ 2019-02-19 16:44  effortsing  阅读(1185)  评论(0编辑  收藏  举报