• Django初识模板语言


    跨站请求伪造

    我们请求的数据提交到哪里呢?

         <form action="login" method="post">
            <p>
                <label for="username">用户名:</label>
                <input id="username" type="text">
            </p>
            <p>
                <label for="pwd">密码:</label>
                <input id="pwd" type="pwd">
    
            </p>
            <p>
                <input type="submit" value="提交">
            </p>
        </form>
    

    请求连接action="login"提交到这个url里 http://127.0.0.1:8001/login/

    反复提交会报错,CSRF verification failed. Request aborted.

    会遇到CSRF的认证,这个我们到后面再说

    应对方法,注销掉setting里的这句话,

     

     注销后再点【提交】页面刷新没有报错了

     如何区分用户的请求POST还是get

    客户端通过浏览器给服务端发送请求,发请求的时候会把默认的浏览器的信息都会发给服务器,请求方式,用什么浏览器,IP等等

    服务器拿到信息后去里面获取内容就可以了。

    view.py处理用户发来的请求

     html提交的请求

    def login(request):
        return render(request,"login.html")
    

     这个方法处理的是提交过来的数据,但是并没有真正对提交的数据进行处理,

    django和wsgi将用户的请求打包发给我们 ,参数request包含了用户的所有的请求数据。

    一个登录请求

    获取用户发过来的用户名密码

    我们需要在模板的input标签中添加name属性,然后后台通过字典的形式获取你的用户名密码。模板代码如下:

        <form action="login" method="post">
            <p>
                <label for="username">用户名:</label>
                <input id="username" name="username" type="text">
            </p>
            <p>
                <label for="pwd">密码:</label>
                <input id="pwd" name="pwd" type="pwd">
    
            </p>
            <p>
                <input type="submit" value="提交">
            </p>
        </form>
    

     我们在后台获取,注意了:request.POST封装了所有post方法发过来的请求。

    def login(request):
        #获取客户端请求的方法
        if request.method == "POST":
            #获取用户名密码
            user_name = request.POST.get("username",None)
            password = request.POST.get("pwd",None)
            print(user_name,password)
        return render(request,"login.html")
    

     页面校验后跳转

    说明:用redirect做重定向跳转到别的页面

    from django.shortcuts import render
    from django.shortcuts import redirect  #做重定向跳转使用
     
    def login(request):
        error_msg = ""
        if request.method == "POST":
            user_name = request.POST.get("username",None)
            password = request.POST.get("pwd",None)
            if user_name == "root" and password == "123":
                return redirect("http://www.baidu.com")  #调转到百度
            else:
                error_msg = "用户名或者密码错误"
        return render(request,"login.html",{'error_msg':error_msg})
    

     在模板中设置变量

    说明:在模板中用对应的{ { 变量名 } } 设置,来获取后台的值。

     这边注意了,span标签,中间没有值的话,在前端页面是不显示的,所以在error_msg初始化是空字符串,如果有错误的话,就会有提示。

  • 相关阅读:
    python类型转换
    手机抓包
    java容器collection的一些简单特点
    WIN7 如何将BAT文件附加到任务栏
    Android新权限机制 AppOps
    记录一写Android常用API
    关于java建立的的包import的问题
    Android组件安全
    查看字节码
    数据库分表之Mybatis+Mysql实践(含部分关键代码)
  • 原文地址:https://www.cnblogs.com/meihan/p/12455865.html
Copyright © 2020-2023  润新知