flask cookies_使用Flask进行Python Web开发

flask cookies_使用Flask进行Python Web开发_第1张图片

什么是Flask?

Flask是Python的API,可用于构建Web应用程序。它是由Armin Ronacher开发的。Flask的框架比Django的框架更明确,并且更易于学习,因为它具有更少的基本代码来实现简单的Web应用程序。Web应用程序框架或Web框架是模块和库的集合,可帮助开发人员编写应用程序而无需编写协议,线程管理等底层代码。Flask基于WSGI(Web服务器网关接口)工具箱 和Jinja2模板引擎。

Flask入门:

安装Flask需要Python2.6或更高版本。您可以从任何python IDE上的Flask包导入Flask。要在任何环境中安装,可以单击下面提供的安装链接。

# an object of WSGI application from flask import Flask     app = Flask(__name__)   # Flask constructor   # A decorator used to tells the application # which URL is associated function @app.route('/')       def hello():     return 'HELLO'  if __name__=='__main__':    app.run() 

‘/’URL与hello()函数绑定。在浏览器中打开Web服务器的主页时,将相应地呈现此功能的输出。

通过调用run()函数来启动Flask应用程序。对于代码中的任何更改,应手动重新启动该方法。为了克服这个问题,启用了调试支持以便跟踪任何错误。

app.debug = Trueapp.run() app.run(debug = True) 

路由:

现在,web框架提供了路由技术,用户可以记住url。直接访问网页而不从主页导航是很有用的。通过以下route() decorator将URL绑定到函数。

# decorator to route URL @app.route(‘/hello’)     # binding to the function of route  def hello_world():         return ‘hello world’ 

如果用户访问http://localhost:5000/hello URL,则hello_world()函数的输出将在浏览器中呈现。如上例所示,应用程序对象的add_url_rule()函数还可用于将URL与该函数绑定。

def hello_world():    return ‘hello world’ app.add_url_rule(‘/’, ‘hello’, hello_world) 

在Flask中使用变量:

flask中的变量用于通过将变量部分添加到规则参数中动态构建URL。参见下面的示例

from flask import Flask app = Flask(__name__)   # routing the decorator function hello_name @app.route('/hello/')   def hello_name(name):    return 'Hello %s!' % name   if __name__ == '__main__':    app.run(debug = True) 

将上面的示例另存为hello.py并从Power Shell运行。接下来,打开浏览器并输入URL http://localhost:5000/hello/GeeksforGeeks。

输出:

Hello GeeksforGeeks!

在上面的示例中,route()装饰器的参数包含作为参数附加到URL‘/hello’的可变部分。因此,如果输入了http://localhost:5000/hello/GeeksforGeeks之类的URL,则“GeeksforGeeks”将作为参数传递给hello()函数。

除了默认的字符串变量部分外,还使用其他数据类型,例如int,float和path(用于目录分隔符通道,可以使用斜线)。Flask的URL规则基于Werkzeug的路由模块。这样可以确保形成的URL是唯一的,并且基于Apache规定的先例。

示例:

from flask import Flask app = Flask(__name__)   @app.route('/blog/') def show_blog(postID):    return 'Blog Number %d' % postID   @app.route('/rev/') def revision(revNo):    return 'Revision Number %f' % revNo   if __name__ == '__main__':    app.run()   # say the URL is http://localhost:5000/blog/555 

输出:

Blog Number 555# Enter this URL in the browser ? http://localhost:5000/rev/1.1Revision Number: 1.100000

在FLask中生成URL:

使用url_for()函数可动态构建特定函数的URL。该函数接受函数名称作为第一个参数,以及一个或多个关键字参数。看这个例子

from flask import Flask, redirect, url_for app = Flask(__name__)   @app.route('/admin')  #decorator for route(argument) function def hello_admin():     #binding to hello_admin call    return 'Hello Admin'      @app.route('/guest/') def hello_guest(guest):    #binding to hello_guest call    return 'Hello %s as Guest' % guest   @app.route('/user/') def hello_user(name):        if name =='admin':  #dynamic binding of URL to function       return redirect(url_for('hello_admin'))      else:       return redirect(url_for('hello_guest', guest = name))   if __name__ == '__main__':    app.run(debug = True) 

要进行测试,请保存上面的代码并通过python shell运行,然后打开浏览器并输入以下URL:

Input: http://localhost:5000/user/adminOutput: Hello Admin Input: http://localhost:5000/user/ABCOutput: Hello ABC as Guest

上面的代码具有一个名为user(name)的函数,可通过输入URL接受值。它基本上检查接收到的参数是否与“admin”参数匹配。如果匹配,则调用hello_admin()函数,否则调用hello_guest()。

Flask支持各种HTTP协议,用于从指定的URL检索数据,这些协议可以定义为:

flask cookies_使用Flask进行Python Web开发_第2张图片

处理静态文件:

web应用程序通常需要静态文件(如javascript或CSS文件)才能在浏览器中呈现web页面的显示。通常,web服务器被配置为设置它们,但在开发过程中,这些文件将作为包中或模块旁边的静态文件夹使用。请参阅下面给出的JavaScript示例:

from flask import Flask, render_template app = Flask(__name__)   @app.route("/") def index():    return render_template("index.html")   if __name__ == '__main__':    app.run(debug = True) 

以下HTML代码:

                                 

hello.js的JavaScript文件是:

function sayHello() {    alert("Hello World") } 

上面的hello.js文件将相应地呈现为HTML文件。

客户网页上的对象数据请求将作为全局请求对象发送到服务器。然后通过导入Flask模块对其进行处理。这些属性包括表单(包含键值对),Args(问号后的解析URL(?)),Cookies(包含Cookie名称和值),Files(与上传文件有关的数据)和Method(当前请求)之类的属性。

Cookies:

Cookie是存储在客户端计算机上的一种文本文件形式,其目的是根据用户的体验和网页的统计情况,记忆和跟踪与客户端使用有关的数据,以改进网站。

请求对象包含cookie的属性。它是所有cookie变量及其对应值的dictionary对象。它还包含自身的到期时间。在Flask中,cookie设置在响应对象上。请参见下面给出的示例:

from flask import Flask app = Flask(__name__) @app.route('/') def index():    return render_template('index.html') filter_nonebrightness_4                          

Enter userID

[email protected]('/setcookie', methods = ['POST', 'GET']) def setcookie(): if request.method == 'POST': user = request.form['nm'] resp = make_response(render_template('cookie.html')) resp.set_cookie('userID', user) return resp @app.route('/getcookie') def getcookie(): name = request.cookies.get('userID') return '

welcome '+name+'

'

运行上面的应用程序并访问浏览器http://localhost:5000/上的链接。

表单设置为'/set Cookie',函数集包含将呈现到另一个网页的Cookie名称userID。'cookie.html'包含指向另一个视图函数getcookie()的超链接,该函数在浏览器中显示该值。

Flask中的Sessions:

在会话中,数据存储在服务器上。它可以定义为客户端登录到服务器直到用户注销的时间间隔。它们之间的数据保存在服务器上的临时文件夹中。为每个用户分配一个特定的会话ID。会话对象是一个字典,其中包含与会话关联的变量的键值对。密钥用于将加密数据存储在cookie上。

例如:

Session[key] = value   // stores the session valueSession.pop(key, None)  // releases a session variable

其他重要的Flask功能:

redirect():用于返回对象的响应,并使用指定的状态代码将用户重定向到另一个目标位置。

语法:

Flask.redirect(location, statuscode, response)// location用于重定向到所需的URL// statuscode发送标头值,默认为302// response用于发起响应。

abort:用于处理代码中的错误。

语法:

Flask.abort(code)

code参数可以采用以下值来相应地处理错误:

400 – For Bad Request401 – For Unauthenticated403 – For Forbidden request404 – For Not Found406 – For Not acceptable425 – For Unsupported Media429 – Too many Requests

Flask中的文件上传:

在Flask中上传文件非常容易。它需要一个带有enctype属性和URL处理程序的HTML表单,该表单可以获取文件并将对象保存到所需的位置。文件被临时存储在服务器上,然后存储在所需的位置。

处理上传URL的HTML语法为:

form action="http://localhost:5000/uploader" method="POST" enctype="multipart/form-data"

以下Flask的python代码是:

from flask import Flask, render_template, request from werkzeug import secure_filename app = Flask(__name__)   @app.route('/upload') def upload_file():    return render_template('upload.html')       @app.route('/uploader', methods = ['GET', 'POST']) def upload_file():    if request.method == 'POST':       f = request.files['file']       f.save(secure_filename(f.filename))       return 'file uploaded successfully'          if __name__ == '__main__':    app.run(debug = True) 

将表单数据发送到服务器的HTML文件:

HTML中的表单用于收集所需条目的信息,然后将这些条目转发并存储在服务器上。可以要求他们阅读或修改表格。flask通过使用URL规则提供此功能。 在下面的示例中,“ /” URL呈现了具有表单的网页(student.html)。填充的数据将发布到“/result” URL,该URL会触发result()函数。results()函数收集字典对象中request.form中存在的表单数据,并将其发送以呈现给result.html。

from flask import Flask, render_template, request app = Flask(__name__) @app.route('/') def student():    return render_template('student.html')   @app.route('/result', methods = ['POST', 'GET']) def result():    if request.method == 'POST':       result = request.form       return render_template("result.html", result = result)   if __name__ == '__main__':    app.run(debug = True) filter_nonebrightness_4                 
{% for key, value in result.items() %} {{ key }} {{ value }} {% endfor %} filter_nonebrightness_4

Name

Physics

Chemistry

Maths

flask cookies_使用Flask进行Python Web开发_第3张图片

Message Flashing:

可以将其定义为出现在网页上的弹出窗口或对话框,或者类似于JavaScript中的alert,用于通知用户。可以通过使用Flask中的flash()方法在Flask中完成此操作。它将消息传递到下一个模板。

语法:

flash(message, category)

message是要显示的实际文本,category是可选的,它将显示任何错误或信息。

示例:

from flask import Flask app = Flask(__name__)   # /login display login form @app.route('/login', methods = ['GET', 'POST'])    # login function verify username and password def login():         error = None        if request.method == 'POST':       if request.form['username'] != 'admin' or           request.form['password'] != 'admin':          error = 'Invalid username or password. Please try again !'      else:            # flashes on successful login          flash('You were successfully logged in')           return redirect(url_for('index'))    return render_template('login.html', error = error) 

你可能感兴趣的:(flask,cookies,flask,html,得到文本框,input的内容)