Django框架学习10-表单请求

1.get请求




    
    文章提交界面


文章标题: 文章内容:

aritcle.html

def article(request):
    return render_to_response("aritcle.html")

def result(request):
    print(request.method)#获取请求方法
    print(request.GET["title"])#获取请求参数,title是input标签中的名字,不存在会报错
    print(request.GET.get("content",None))#获取请求参数,content是input标签中的名字,不存在会报错
    return HttpResponse("提交完成")

接收函数result,点击提交按钮后,跳转显示提交完成,可以获取上一步得到上一步的参数

Django框架学习10-表单请求_第1张图片

获取的请求方法参数和请求方法类型

2.post方法获取提交参数与get方法类似。

用户注册




    
    注册页面


新用户注册!

{% csrf_token %}

用户 名: * {{rename}}

密 码: *

手机号码:

def regist(request):
    if request.method == "POST":
        username = request.POST.get("username", None)#获取用户输入
        password = request.POST.get("password")
        phone = request.POST.get("phone")
        user = User1.objects.filter(name=username)#先从数据库查询是否已经注册过了
        print(user)
        if user:
            res = "%s用户名已被注册,请更换一个" % username
            return render(request, 'regist.html', {'rename': res})
        else:
            user1 = User1()
            user1.name = username
            user1.password = make_password(password)#密文报存密码
            user1.phone = phone
            user1.save()  #保存到数据库
            return render_to_response("login.html")
    return render_to_response("regist.html")

登录




    
    登录页面


欢迎登录!

{% csrf_token %}

用户名: *

密码: *

{{info}}
def login(request):
    if request.method=="POST":
        username = request.POST.get("username", None)
        password = request.POST.get("password")
        user = User1.objects.filter(name=username).first()
        result = check_password(password,user.password)#####校验密码
        print(user)
        if user:
            return HttpResponse("登录成功")
        else:
            return render_to_response("login.html",{"info":"用户名或密码错误"})
    else:
        return render_to_response("login.html",{"info":""})

2.跨站点伪造请求--csrf

{% csrf_token %},post请求中表单提交时防止跨站点伪造请求,增加这句话。

Django预防CSRF攻击的方法是在用户提交的表单中加入一个csrftoken的隐含值,这个值和服务器中保存的csrftoken的值相同,这样做的原理如下:

1、在用户访问django的可信站点时,django反馈给用户的表单中有一个隐含字段csrftoken,这个值是在服务器端随机生成的,每一次提交表单都会生成不同的值

2、当用户提交django的表单时,服务器校验这个表单的csrftoken是否和自己保存的一致,来判断用户的合法性

3、当用户被csrf攻击从其他站点发送精心编制的攻击请求时,由于其他站点不可能知道隐藏的csrftoken字段的信息这样在服务器端就会校验失败,攻击被成功防御

3.密码加解密
密码如果明文存储到数据库的话不太安全,一般会加密存储,django里面提供了一套加密方法make_password,解密用check_password,需先导入

你可能感兴趣的:(Django框架学习)