文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

web开发框架Flask学习二

2023-01-30 23:20

关注
jinja2模板规范
        在当前项目中创建一个文件为templates的文件夹,将其设置为模板文件夹,新建的html为模板页面,
        在视图函数中使用render_template(".html的文件", my_list=mylist),my_list作为在模板页面使用的的变量 {{ my_list}}
        
        过滤器 符号 "|" 管道左边作为输入传一个变量到管道右边进行输出
            safe 对字符串的html标签的代码进行解析,并以html显示在当前文件
            reverse    翻转
            upper      大写
            lower      小写等
            
        自定义过滤器(本身相当于一个函数)
            @app.template_filter("valreverse")     #将其添加到过滤器组中  
            def add_after(value):
                value += "Hello world"
                result = "¥" + value + "&&"
                return result        
            
        模板中的for和if
       loop.index # 获取下标为0的数据
       loop。index0 # 获取下标为1的数据 {% for ret in result %}
          # 获取下标索引为0的数据 {% if loop.index == 1 %} <li style="background-color: red">{{ ret.data }}</li> alert({{ ret.data }}) {% elif loop.index == 2 %} <li style="background-color: green">{{ ret.data }}</li> {% elif loop.index == 3 %} <li style="background-color: fuchsia">{{ ret.data }}</li> {% else %} <li style="background-color: cyan">{{ ret.data }}</li> {% endif %} {% endfor %} 模板代码的复用 宏 {% macro func_macro() %} // 这里填想要封装的html代码 {%endmacro %} {% import html模板 %} 导入到其他模块中使用
          该模板中含有func_macro函数 继承 导入模板文件

          // 继承基类中的html代码 {% "extends base_index_detail.html" %} // 以下代码是进行挖坑和填坑的操作 {% block titleBloock %} // 自己独有的代码块 {% endblock %} 包含 include() ignore missing // 忽略错误的
模板中特有的变量和函数 在py文件中和模板文件中都可以直接拿来使用,不需要传参 request session g config url_for() get_flashed_messages() 与 flash搭配使用
       
       代码如下: @app.route("/login") def login(): g.name = "xiaoming" session["username"] = "zhangsan" flash("哈哈哈") flash("嘻嘻嘻") flash("呵呵呵") return render_template("demo_unique.html") html模板中的内容为: config: {{ config.DEBUG }} <br> session: {{ session["username"] }}<br> request: {{ request.url }}<br> g变量: {{ g.name }} <br> 两个函数为: <a href="{{ url_for('index') }}">回到首页</a><br/> flash结果为: {% for data in get_flashed_messages() %} {{ data }} {% endfor %} flask_wtf表单 pip install flask_wtf 原生的form表单和用类生成的对象,再用对象去创建这个表单 Web 表单是 Web 应用程序的基本功能 它是HTML页面中负责数据采集的部件,表单有三个部分组成:表单标签、表单域、表单按钮, 表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器 CSRF 跨站请求伪造
       flask_wtf中有个generate_csrf 会自动生成CSRF CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造 CSRF攻击 CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账...... 造成的问题:个人隐私泄露以及财产安全 开启CSRF验证 app.config['WTF_CSRF_ENABLED'] = True 防止CSRF攻击 在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token 的值在 Form 表单中添加一个隐藏的的字段,值也是 csrf_token,

           在form表单中设置csrf
             <input type="hidden" name="csrf_token" value="{{ csrf_token() }}">

                在用户点击提交的时候,会带上这两个值向后台发起请求
                后端接受到请求,以会以下几件事件:
                从 cookie中取出 csrf_token从表单数据中取出来隐藏的 csrf_token 的值进行对比如果比较之后两值一样,那么代表是正常的请求,
          如果没取到或者比较不一样,代表不是正常的请求,不执行下一步操作

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯