📜  烧瓶饼干

📅  最后修改于: 2021-01-02 04:29:10             🧑  作者: Mango

烧瓶饼干

cookie以文本文件的形式存储在客户端计算机上。 Cookies用于跟踪用户在网络上的活动,并根据用户的选择反映一些建议,以增强用户的体验。

Cookie是由客户端计算机上的服务器设置的,它将在以后的所有事务中与客户端对特定服务器的请求关联,直到Cookie的生存期到期或被服务器上的特定网页删除为止。

在flask中,cookie与Request对象相关联,作为所有cookie变量及其由客户端传输的值的字典对象。 Flask帮助我们指定网站的到期时间,路径和域名。

response.setCookie(, <content>, <expiry time>)
</span></code></pre>
</div>
<p>在Flask中,通过在响应对象上使用set_cookie()方法在响应对象上设置cookie。可以通过在view函数使用make_response()方法来形成响应对象。</p>
<p>另外,我们可以使用与Request对象关联的cookies属性的get()方法读取存储在客户端计算机上的cookie。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Java"><code><span <="" span="" style="font-size: 10pt">request.cookies.get(<title>)
</span></code></pre>
</div>
<p>下面是设置标题为“ foo”和内容为“ bar”的cookie的简单示例。</p>
<h4>例</h4>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Java"><code><span <="" span="" style="font-size: 10pt">from flask import *

app = Flask(__name__)

@app.route('/cookie')
def cookie():
    res = make_response("<h1>cookie is set</h1>")
    res.set_cookie('foo','bar')
    return res

if __name__ == '__main__':
    app.run(debug = True)
</span></code></pre>
</div>
<p>上面的Python脚本可用于在网站<strong>localhost:5000</strong>的浏览器上设置名称为'foo'和内容为'bar'的cookie。</p>
<p>使用命令Python script.py运行此Python脚本,然后在浏览器中检查结果。</p>
<p><img class="img-fluid" src="https://mangdo-1254073825.cos.ap-chengdu.myqcloud.com/front_eng_imgs/javatpoint/javatpoint/flask-cookies.png"/></p>
<p>我们可以在浏览器的内容设置中跟踪cookie的详细信息,如下图所示。</p>
<p><img class="img-fluid" src="https://mangdo-1254073825.cos.ap-chengdu.myqcloud.com/front_eng_imgs/javatpoint/javatpoint/flask-cookies2.png"/></p>
<h4>Flask中的登录应用程序</h4>
<p>在这里,我们将在烧瓶中创建一个登录应用程序,其中向用户显示一个登录页面(login.html),提示您输入电子邮件和密码。如果密码为“ jtp”,则应用程序会将用户重定向到成功页面(success.html),在该页面上将提供消息和指向配置文件的链接(profile.html),否则它将用户重定向到错误页面。 。</p>
<p>控制器Python flask脚本(login.py)控制应用程序的行为。它包含针对各种情况的视图功能。用户的电子邮件以cookie的形式存储在浏览器中。如果用户输入的密码是“ jtp”,则应用程序将用户的电子邮件ID作为cookie存储在浏览器中,然后在配置文件页面中读取该cookie以向用户显示一些消息。</p>
<p>该应用程序包含以下Python和HTML脚本。该应用程序的目录结构如下。</p>
<p><img class="img-fluid" src="https://mangdo-1254073825.cos.ap-chengdu.myqcloud.com/front_eng_imgs/javatpoint/javatpoint/flask-cookies3.png"/></p>
<p><strong>login.py</strong></p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Java"><code><span <="" span="" style="font-size: 10pt">from flask import *

app = Flask(__name__)

@app.route('/error')
def error():
    return "<p><strong>Enter correct password</strong></p>"

@app.route('/')
def login():
    return render_template("login.html")

@app.route('/success',methods = ['POST'])
def success():
    if request.method == "POST":
        email = request.form['email']
        password = request.form['pass']
    
    if password=="jtp":
        resp = make_response(render_template('success.html'))
        resp.set_cookie('email',email)
        return resp
    else:
        return redirect(url_for('error'))

@app.route('/viewprofile')
def profile():
    email = request.cookies.get('email')
    resp = make_response(render_template('profile.html',name = email))
    return resp

if __name__ == "__main__":
    app.run(debug = True)
</span></code></pre>
</div>
<p><strong>login.html</strong></p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Java"><code><span <="" span="" style="font-size: 10pt"><html>
<head>
    <title>login


    
Email
Password

success.html



success


    

Login successful

View Profile

profile.html



    profile


    

Hi, {{name}}

执行

使用命令Python login.py运行Python脚本,并按照以下快照中的说明在浏览器上访问localhost:5000 /。

单击提交。它将显示成功消息,并提供指向profile.html的链接。

点击查看个人资料。它将从浏览器中读取cookie集作为响应,并显示以下消息。