当前位置: 移动技术网 > IT编程>脚本编程>Python > Flask 模板语言,装饰器

Flask 模板语言,装饰器

2019年12月06日  | 移动技术网IT编程  | 我要评论

平潭小练岛,新界日报网,手枪大全

 

jinja2模板语言

  1. # -*- coding: utf-8 -*-  
  2. from flask import flask, render_template, request, redirect, markup  
  3.     
  4. app = flask(__name__)  
  5.     
  6. student = {'name': 'old', 'age': 38, 'gender': ''}  
  7.     
  8. student_list = [  
  9.     {'name': 'old', 'age': 38, 'gender': ''},  
  10.     {'name': 'boy', 'age': 73, 'gender': ''},  
  11.     {'name': 'edu', 'age': 84, 'gender': ''}  
  12. ]  
  13.     
  14. student_dict = {  
  15.     1: {'name': 'old', 'age': 38, 'gender': ''},  
  16.     2: {'name': 'boy', 'age': 73, 'gender': ''},  
  17.     3: {'name': 'edu', 'age': 84, 'gender': ''},  
  18. }  
  19.     
  20. 返回标签  
  21. tag = '<input type="text", name="username">'  
  22. tag = markup(tag)  # 安全标签字符串  
  23.     
  24.     
  25. 传入函数全局可以使用  
  26. @app.template_global()  
  27. def func(a, b):  
  28.     return a + b  
  29.     
  30.     
  31. @app.template_filter()  
  32. def fil(a, b, c):  
  33.     return a + b + c  
  34.     
  35.     
  36. @app.route('/')  
  37. def index():  
  38.     return render_template('', stu=student,  
  39.                            stu_list=student_list,  
  40.                            stu_dic=student_dict,  
  41.                            tagtag=tag)  # 传递参数给前端  
  42.     
  43.     
  44. @app.route('/login', methods=['post', 'get'])  
  45. def login():  
  46.     if request.method == 'get':  
  47.         return render_template('login.html')  
  48.     
  49.     if request.form.get('username') == 'root' or request.form.get('password') == 'root':  
  50.         return redirect('/')  
  51.     
  52.     
  53. app.run(host='0.0.0.0'debug=true)  

 

前端展示:

  1. <!doctype html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="utf-8">  
  5.     <title>首页</title>  
  6. </head>  
  7. <body>  
  8.     
  9. {{ tag }}                      {# 后端传入标签 #}  
  10. {{ func(1, 2) }}               {# 函数调用 #}  
  11. {{ func(1, 2) | fil(1, 2) }}   {#  | 前面当成第一个参数传入 #}  
  12.     
  13. {% macro create_drf(na, ty) %}  {# 声明函数 叫宏#}  
  14. {#    {{ na }}: {{ ty }} <input name="{{ na }}"type="{{ ty }}">#}  
  15.     {{ na + ty }}  
  16. {% endmacro %}  
  17.     
  18. {# 调用 macro #}  
  19. {#{{ create_drf('username', 'text') }}#}  
  20. {{ create_drf(1, 2) }}  
  21.     
  22.     
  23. <br>  
  24. 学生信息{{ stu }}  
  25. <table border="2px">  
  26.     <tr>  
  27.         <td>{{ stu.name }}</td>                 {# 三种取值的方式 #}  
  28.         <td>{{ stu.get('age' )}}</td>  
  29.         <td>{{ stu['gender'] }}</td>  
  30.     </tr>  
  31. </table>  
  32.     
  33. {{ stu_list }}  
  34. <table border="2px">  
  35.     {% for stu in stu_list %}                   {# 遍历列表 #}  
  36.         <tr>  
  37.             <td>{{ stu.name }}</td>  
  38.             <td>{{ stu.get('age')}}</td>  
  39.             <td>  
  40.                 {% if stu['gender'] == '' %}  {# for循环 #}  
  41.                       
  42.                 {% else %}  
  43.                     {{ stu['gender'] }}  
  44.                 {% endif %}  
  45.             </td>  
  46.         </tr>  
  47.     {% endfor %}  
  48. </table>  
  49.     
  50. {{ stu_dic }}  
  51. <table border="2px">  
  52.     {% for id, info in stu_dic.items() %}         {# 遍历字典 keys. vals #}  
  53.         <tr>  
  54.             <td>{{ id }}</td>  
  55.             <td>{{ info.name }}</td>  
  56.             <td>{{ info.get('age') }}</td>  
  57.             <td>{{ info['gender'] }}</td>  
  58.     
  59.         </tr>  
  60.     {% endfor %}  
  61. </table>  
  62.     
  63. </body>  
  64. </html>  

 

session

  1. # -*- coding: utf-8 -*-  
  2. from flask import flask, session, render_template, request, redirect  
  3.     
  4. app = flask(__name__)  
  5.     
  6. app.secret_key = 'ujyujyunyun#yurefrefr'  # 加密字符串  
  7.     
  8.     
  9. @app.route('/')  
  10. def index():  
  11.     if not session.get('user'):  
  12.         return redirect('/login')  
  13.     return render_template('index2.html')  
  14.     
  15.     
  16. @app.route('/login', methods=['post', 'get'])  
  17. def login():  
  18.     if request.method == 'get':  
  19.         return render_template('login.html')  
  20.     if request.form.get('username') == 'root':  
  21.     
  22.         session['user'] = 'peach'  # 设置session,存放在了客户端(我们映像中session是存在服务端的)  
  23.         # 因为,flask 为了精简自己,不往自己和内存中添加,就是通过secret_key 加密放在客户端浏览器  
  24.         # 因此,引入的第三方组件 flask-session,相对安全解决了session存放在浏览器问题  
  25.     
  26.         return redirect('/')  
  27.     
  28.     
  29. app.run(host='0.0.0.0'debug=true)  

 

装饰器

通用装饰器

  1. 装饰器  
  2. def waibu(func):  
  3.     def neibu(*args, **kwargs):  
  4.         ret = func(*args, **kwargs)  
  5.         return ret  
  6.     return neibu  
  7.     
  8.     
  9. def f(a, b):  
  10.     return a + b  
  11.     
  12. # print(waibu(f))  # <function waibu.<locals>.neibu at 0x7fb86dffe2f0>  得到一个内部函数neibu  
  13. ni = waibu(f)  
  14. print(ni(1, 2))  

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网