博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flask前后台交互数据的几个思路
阅读量:6705 次
发布时间:2019-06-25

本文共 2861 字,大约阅读时间需要 9 分钟。

通过url进行参数传递:

@app.route('/hello/
') #
为传递的参数 def hello(name=None): return render_template('src/hello.html',name=name)

hello.html的内容:

  Hello from Flask  {% if name %}  

Hello {
{ name }}!

{% else %}

Hello World!

{% endif %}

其 中,name作为传入的变量。render_template()方法可以用来直接渲染模板,免去繁琐的html生成工作。 render_template方法只需传入需要渲染的模板名和传递个模板引擎(flask采用的是Jinja2)的参数。模板名需要放置在项目根目录下 的templates目录。

HTTP方法:

flask中一个route默认只应答http的get方法。可以通过methods参数指定具体能够应答的http方法。

@app.route('/test', methods=['POST','GET'])    # 可以应答POST和GET方法  def test():      print(request.method)                      # request对象封装了http的request请求      print(request.form['username'])            # form为前端的表单,request.form属于dict类型      return 'response back'                     # 返回字符串类型的结果

如果要返回json字符串,可以使用如下方法:

jsonStr={'result':'hello world'}  return jsonify(jsonStr)                        # 或者json.dumps(jsonStr)

jsonStr 是dict类型,然后通过jsonify方法直接将dict类型转换为json串。当然也可以使用json.dumps(jsonStr)将dict转换 为json字符串。jsonify是flask自带的json处理类,返回的为flask结果,处理json串还携带了content- type="application/json"。json.dumps是单纯的转换为json串。另外json.dumps能够处理的类型比 jsonify多,比如list类型。

静态文件:

静态文件(比如css等)需要存放于根目录下的static目录下。可以通过url_for方法产生静态文件的url。 比如:

url_for('static', filename='style.css')

cookies&session:

读取cookie参数:

from flask import request  @app.route('/')  def index():      username = request.cookies.get('username')      # use cookies.get(key) instead of cookies[key] to not get a      # KeyError if the cookie is missing.

设置cookie参数:

from flask import make_response  @app.route('/')  def index():      resp = make_response(render_template(...))    # Converts the return value from a view function to a real response object that is an instance of response_class.      resp.set_cookie('username', 'the username')      return resp

session的一个例子:

from flask import Flask, session, redirect, url_for, escape, request  app = Flask(__name__)  @app.route('/')  def index():      if 'username' in session:          return 'Logged in as %s' % escape(session['username'])    # session是dict类型      return 'You are not logged in'  @app.route('/login', methods=['GET', 'POST'])  def login():      if request.method == 'POST':          session['username'] = request.form['username']            # 设置session中的username变量          return redirect(url_for('index'))                                                      return '''''         

''' @app.route('/logout') def logout(): # remove the username from the session if it's there session.pop('username', None) # 移除session中的username变量 return redirect(url_for('index')) # set the secret key. keep this really secret: app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'

密钥的获取方式:

>>> import os  >>> os.urandom(24) 通过ajax读写后台数据 通过json读写数据

转载地址:http://jcflo.baihongyu.com/

你可能感兴趣的文章
利用samba给mysql提供数据存储服务
查看>>
MySQL日志管理
查看>>
时间戳与日期之间的转化
查看>>
linux yum安装时找不到mirror
查看>>
emeditor如何设置行号和标尺
查看>>
lua metatables中操作__index
查看>>
Kubernetes在上汽集团云平台及AI方面的应用
查看>>
Kubernetes首个严重安全漏洞发现者,谈发现过程及原理机制
查看>>
安装centOS6系统时switching to clocksource tsc解决方法
查看>>
linux 如何固定IP
查看>>
Go语言-切片和map
查看>>
简单工厂模式
查看>>
易佳通文档管理软件远程登录客户端设置方法
查看>>
nginx虚拟主机
查看>>
分享自己开发的Oracle DUL工具
查看>>
Confluence 6 配置 Windows 服务
查看>>
FTP
查看>>
Linux基础优化
查看>>
Day 28 磁盘管理下部
查看>>
6s管理制度在于医院行政科的实施办法
查看>>