Python计数器添加和减去



我得到了计数器的工作,我很确定我让帖子工作了。有人可以看我的代码,告诉我在哪里出错。该代码保留会话计数。我希望忍者按钮 2,而黑客将其重置为1。除了最后两个部分。任何帮助,将不胜感激。

from flask import Flask, session, render_template, url_for, request, redirect
app = Flask(__name__)
app.secret_key = 'F12Zr47j3yX R~X@H!jmM]Lwf/,?KT'

def sumSessionCounter():
  try:
    session['counter'] += 1
  except KeyError:
    session['counter'] = 1

@app.route('/')
def index():
    sumSessionCounter()
    return render_template('index.html')

def contact():
    if request.method == 'POST':
        if request.form['ninja'] == session['counter'] + 2:
            pass # do something
        elif request.form['hacker'] == session['counter'] - session['counter'] + 1 :
            pass # do something else
            pass # unknown
    elif request.method == 'GET':
        return render_template('contact.html', form=form)


app.run(debug=True)
<!DOCTYPE html>
<html>
<head>
  <title></title>
  <meta charset="utf-8">
  <link rel="stylesheet" type="text/css" href="stylenew.css"></style>
  <script type="text/javascript" src='http://code.jquery.com/jquery-1.10.2.min.js'></script> 
  <script>

  </script>
</head>
<body>
<h1>{{session['counter']}}</h1>
<p><input type="submit" name="submit" value="ninja"></p>
<p><input type="submit" name="submit" value="hacker"></p>
</body>
</html>

我认为在这里添加一些AJAX调用会更好。在您的app.py中,添加一条路线:

@app.route('/sessionCounter')
def sessionCounter():
    message = request.args.get('message', 'reset')
    if message == 'add':
        try:
            session['counter'] += 2
        except KeyError:
            session['counter'] = 1
    elif message == 'reset':
        session['counter'] = 1
    return jsonify(result=session['counter'])  # need to import jsonify from flask

我还假设您将contact.html用作此特定HTML视图的模板。因此,您的app.py需要一条呈现模板的路由:

@app.route('/contact')
def contact():
    return render_template('contact.html', session=session)

现在在您的联系人HTML中,您需要添加JS代码来处理按钮点击并修改按钮自己:

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <meta charset="utf-8">
  <link rel="stylesheet" type="text/css" href="stylenew.css"></style>
  <script type="text/javascript" src='http://code.jquery.com/jquery-1.10.2.min.js'></script> 
  <script type="text/javascript">
    $(function() {
      $('button#add').bind('click', function() {
        $.getJSON('/sessionCounter', {
          message: 'add'
        }, function(data) {
          $("#result").text(data.result);
        });
        return false;
      });
    });
    $(function() {
      $('button#reset').bind('click', function() {
        $.getJSON('/sessionCounter', {
          message: 'reset'
        }, function(data) {
          $("#result").text(data.result);
        });
        return false;
      });
    });
  </script>
</head>
<body>
<h1 id='result'>{{session['counter']}}</h1>
<p><button id="add">Ninja</button></p>
<p><button id="reset">Hacker</button></p>
</body>
</html>

现在启动您的应用程序,然后goto http://localhost:5000/contact,然后单击:)

最新更新