zoukankan      html  css  js  c++  java
  • 2020年3月22日

    时间:1.5个小时左右

    代码:100行左右

    博客:1

    知识点:继续了解flask框架

    继续昨天的的内容

    5.模板继承

    一般我们的网站虽然页面多,但是很多部分是重用的,比如页首,页脚,导航栏之类的。对于每个页面,都要写这些代码,很麻烦。Flask的Jinja2模板支持模板继承功能,省去了这些重复代码。让我们基于上面的例子,在”templates”目录下,创建一个名为”layout.html”的模板:
    <!doctype html>
    
    <title>Hello Sample</title>
    
    <link rel="stylesheet"  type="text/css"  href="{{ url_for('static', filename='style.css') }}">
    
    <div class="page">
    
        {% block body %}
    
        {% endblock %}
    
    </div>

    再修改之前的”hello.html”,把原来的代码定义在”block body”中,并在代码一开始”继承”上面的”layout.html”:

    {%  extends  "layout.html"  %}
    
    {%  block  body  %}
    
    {%  if  name  %}
    
      <h1>Hello {{ name }}!</h1>
    
    {% else %}
    
      <h1>Hello World!</h1>
    
    {%  endif  %}

    6. HTML自动转义

    @app.route('/')
    
    def  index():
    
        return  '<div>Hello %s</div>'  %  '<em>Flask</em>打开页面,你会看到”Hello Flask”字样,而且”Flask”是斜体的,因为我们加了”em”标签。但有时我们并不想让这些HTML标签自动转义,特别是传递表单参数时,很容易导致HTML注入的漏洞。我们把上面的代码改下,引入”Markup”类:from  flask import  Flask,  Markup
    
    app  =  Flask(__name__)
    
    @app.route('/')
    
    def  index():
    
        return  Markup('<div>Hello %s</div>')  %  '<em>Flask</em>'

    再次打开页面,”em”标签显示在页面上了。Markup还有很多方法,比如”escape()”呈现HTML标签, “striptags()”去除HTML标签。这里就不一一列举了。

    7.Request 对象

    from flask import Flask,url_for,request,render_template
    
    @app.route('/login', methods=['POST', 'GET'])
    def login():
        if request.method == 'POST':
            if request.form['user'] == 'admin':
                return 'Admin login successfully!'
            else:
                return 'No such user!'
        title = request.args.get('title', 'Default')
        return render_template('login.html', title=title)
    if __name__ == "__main__":
        app.run(debug=True)

    简单解释下,request中”method”变量可以获取当前请求的方法,即”GET”, “POST”, “DELETE”, “PUT”等;”form”变量是一个字典,可以获取Post请求表单中的内容,在上例中,如果提交的表单中不存在”user”项,则会返回一个”KeyError”,你可以不捕获,页面会返回400错误(想避免抛出这”KeyError”,你可以用request.form.get(“user”)来替代)。而”request.args.get()”方法则可以获取Get请求URL中的参数,该函数的第二个参数是默认值,当URL参数不存在时,则返回默认值。

    在当前目录下,创建一个子目录”templates”(注意,一定要使用这个名字)。然后在”templates”目录下,添加
    layout.html

    <!doctype html>
    <title>Hello Sample</title>
    <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}">
    <div class="page">
        {% block body %}
        {% endblock %}
    </div>
    参考:https://www.jianshu.com/p/6452596c4edb

  • 相关阅读:
    jsp的DAO三层-------------实现登录功能
    JSP前后台交互实现注册、登录功能
    结构化查询语言----SQL基本操作
    HTML5 Web存储
    jQuery 属性和CSS
    jQuery DOM操作
    JS中的函数、BOM和DOM操作
    接口和抽象类
    单例模式
    IP介绍
  • 原文地址:https://www.cnblogs.com/j-y-s/p/14903188.html
Copyright © 2011-2022 走看看