www.2016338.comFlaskSessions会话

帮助 ww9992019com 发表于 5 天前

www.2016338.com开户请拨15974937077冬奥会金华经济开发区MRIY6s<div style="width:100%;float:left;" class="article-content">

                <input type="hidden" name="article_id" id="article_id" value="13503">
                <input type="hidden" name="catid" id="catid" value="0">

                <p>与Cookie不同,会话数据存储在服务器上。 会话是客户端登录到服务器并注销的时间间隔。 需要在此会话中进行的数据存储在服务器上的临时目录中。</p>

<p>与每个客户端的会话分配一个会话ID。 会话数据存储在cookie顶部,服务器以加密方式签名。 对于这种加密,Flask应用程序需要一个定义<code>SECRET_KEY</code>。</p>

<p>会话对象也是一个包含会话变量和关联值的键值对的字典对象。</p>

<p>例如,要设置<code>'username'</code>会话变量,请使用语句 -</p>

<pre><code class="lang-python">Session['username'] = 'admin'

</code></pre>

<p>要删除会话变量,请使用<code>pop()</code>方法。</p>

<pre><code class="lang-python">session.pop('username', None)

</code></pre>

<p>以下代码是Flask中会话如何工作的简单演示。 URL =&gt; <code>'/'</code> 提示用户登录,因为会话变量<code>username</code>没有设置。</p>

<pre><code class="lang-python">@app .route('/')

def index():

if 'username' in session:

  username = session['username']

     return 'Logged in as ' + username + '&lt;br&gt;' + \

     "&lt;b&gt;&lt;a href = '/logout'&gt;click here to log out&lt;/a&gt;&lt;/b&gt;"

return "You are not logged in &lt;br&gt;&lt;a href = '/login'&gt;&lt;/b&gt;" + \

  "click here to log in&lt;/b&gt;&lt;/a&gt;"

</code></pre>

<p>当用户浏览到URL=&gt;<code>'/login'</code>时,<code>login()</code>函数显示视图,因为它是通过GET方法调用的,所以打开一个登录表单。</p>

<p>表单填写后重新提交到URL=&gt; <code>/login</code>,现在会话变量被设置。 应用程序被重定向到URL=&gt; <code>/</code>。 这时找到会话变量:<code>username</code>。</p>

<pre><code class="lang-python">@app .route('/login', methods = ['GET', 'POST'])

def login():

if request.method == 'POST':

  session['username'] = request.form['username']

  return redirect(url_for('index'))

return '''

&lt;form action = "" method = "post"&gt;

  &lt;p&gt;&lt;input type = text name = "username"/&gt;&lt;/p&gt;

  &lt;p&lt;&lt;input type = submit value = Login/&gt;&lt;/p&gt;

&lt;/form&gt;

'''

</code></pre>

<p>该应用程序还包含一个<code>logout()</code>视图函数,它删除’username’会话变量的值。 再次 URL 跳转到 ‘/‘ 显示开始页面。</p>

<pre><code class="lang-python">@app .route('/logout')

def logout():

# remove the username from the session if it is there

session.pop('username', None)

return redirect(url_for('index'))

</code></pre>

<p>运行应用程序并访问主页(确保设置应用程序的<code>secret_key</code>)。</p>

<pre><code class="lang-python">from flask import Flask, session, redirect, url_for, escape, request

app = Flask(name)

app.secret_key = 'any random string’

</code></pre>

<p>完整代码如下所示 - </p>

<pre><code class="lang-python">from flask import Flask

from flask import render_template

from flask import request

from flask import make_response

from flask import Flask, session, redirect, url_for, escape, request

app = Flask(name)

app.secret_key = 'fkdjsafjdkfdlkjfadskjfadskljdsfklj'

@app .route('/')

def index():

if 'username' in session:

    username = session['username']

    return '登录用户名是:' + username + '&lt;br&gt;' + \

             "&lt;b&gt;&lt;a href = '/logout'&gt;点击这里注销&lt;/a&gt;&lt;/b&gt;"





return "您暂未登录, &lt;br&gt;&lt;a href = '/login'&gt;&lt;/b&gt;" + \

     "点击这里登录&lt;/b&gt;&lt;/a&gt;"

@app .route('/login', methods = ['GET', 'POST'])

def login():

if request.method == 'POST':

    session['username'] = request.form['username']

    return redirect(url_for('index'))



return '''

&lt;form action = "" method = "post"&gt;

  &lt;p&gt;&lt;input type ="text" name ="username"/&gt;&lt;/p&gt;

  &lt;p&gt;&lt;input type ="submit" value ="登录"/&gt;&lt;/p&gt;

&lt;/form&gt;

'''

@app .route('/logout')

def logout():

# remove the username from the session if it is there

session.pop('username', None)

return redirect(url_for('index'))

if name == 'main':

app.run(debug = True)

</code></pre>

<p>输出将显示如下。点击链接“<strong>点击这里登录</strong>”。<br><img src="http://www.yiibai.com/uploads/images/201805/2505/286160524_30991.png" alt=""></p>

<p>该链接将被引导至另一个界面。 输入’admin’。<br><img src="http://www.yiibai.com/uploads/images/201805/2505/283160524_14904.png" alt=""></p>

<p>屏幕会显示消息“<strong>登录用户名是:admin</strong>”。如下所示 -<br><img src="http://www.yiibai.com/uploads/images/201805/2505/322160525_75618.png" alt=""></p>

                <br>
                <p style="text-align:center;float:left;width:100%;margin-top:24px;margin-bottom:18px;">
                        <button class="layui-btn layui-btn-danger" id="btn-reward"> ¥ 我要打赏 </button>  
                        <button class="layui-btn" id="article-perfect">
                            <i class="layui-icon layui-icon-edit"></i>教程纠错
                        </button>
                        <button class="layui-btn layui-btn-normal" id="action-collection">
                            <i class="layui-icon layui-icon-rate"></i>收藏
                        </button>
                </p>



                <div style="width:100%;margin-bottom: 16px; height: 32px;margin-top:18px;float:left;">

                    <span style="float:left;">上一篇:<a href="http://f2e.im/u/ww9992019com" title="Flask Cookies处理"><i class="layui-icon"></i>
                            Flask Cookies处理</a></span>
                                            <span style="float:right;">下一篇:<a href="http://f2e.im/u/ww9992019com" style="float:right;" title="下一篇:Flask重定向和错误"><i class="layui-icon"></i>
                            Flask重定向和错误</a></span>
                                            <div id="googlead" style="float:left;margin-top:8px;">
                        <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
                        <!-- yiibai下方 -->
                        <ins class="adsbygoogle" style="display:inline-block;width:728px;height:90px" data-ad-client="ca-pub-1090193214637198" data-ad-slot="6494738921"></ins>
                        <script>
                            (adsbygoogle = window.adsbygoogle || []).push({});
                        </script>
                    </div>
                </div>

                <div style="width:100%;margin-top:18px;float:left;">


            </div>
暂无回复,说出你的观点吧
登录后即可参与回复