Flask通过路由

时间:2016-10-18 05:02:13

标签: python flask flask-sqlalchemy

所以我有一个问题,我使用烧瓶路线来编辑我的项目中的现有选项卡。应该发生的是我的项目存储用户和标签两件事。我有几个选项卡在我的数据库中,我想为它创建编辑功能。所以我正在创建和编辑将传递正在编辑的用户ID和标签ID的路由。应该发生的是标签数量和正在编辑的描述将出现在输入框中供我编辑。然后它应该更改数据库中的该选项卡并返回显示带编辑的所有表的页面。

发生的事情是,无论我点击什么标签,它都会在输入框中显示第一个标签信息,当我提交编辑添加并将更改提交到数据库时,会添加一个新选项卡并将其赋予变化的值。我将插入3个代码。

**我确实已经导入了所有正确的sqlalchemy信息

第一段代码是数据库

class Users(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key = True)
    username = Column(String(16), nullable = False, unique = True, index = True)

class Tab_Event(Base):
    __tablename__ = 'tab_event'

    id = Column(Integer, primary_key = True)
    description = Column(String(200))
    amount = Column(String(10))#may be changed to a float or decimal value later on during development
    user_id = Column(Integer(10), ForeignKey('users.id'))
    users = relationship(Users)

以下代码部分是正在使用的路由

@app.route('/user/<int:user_id>')
def DisplayUsers(user_id):
    user = session.query(Users).filter_by(id = user_id).one()
    items = session.query(Tab_Event).filter_by(user_id = user.id)
    return render_template('viewTabs.html', user = user, items = items)

@app.route('/newtab/<int:user_id>', methods = ['GET', 'POST'])
def AddNewTab(user_id):
    if request.method == 'POST':
        newTab = Tab_Event(amount = request.form['amount'], description = request.form['description'], user_id = user_id)
        session.add(newTab)
        session.commit()
        return redirect(url_for('DisplayUsers', user_id = user_id))
    return render_template('createTab.html', user_id = user_id)

@app.route('/edit/<int:user_id>/<int:tab_id>', methods = ['GET', 'POST'])
def EditTabEvent(user_id, tab_id):
    editTab = session.query(Tab_Event).filter_by(id = user_id).one()
    if request.method == 'POST':
        if request.form['name']:
            editTab.name = request.form['amount']
        if request.form['description']:
            editTab.description = request.form['description']
        session.add(editTab)
        session.commit()
        return redirect(url_for('DisplayUsers', user_id = user_id))
    else:
        return render_template('editTab.html', user_id = user_id, tab_id = tab_id, item = editTab)

最后一段代码是我用来编辑的html文档

<html>
  <body>

    <h1>This page is where new users are made</h1>
    <form action="{{url_for('AddNewTab', user_id = user_id, tab_id = item.id)}}" method="POST">
      <table>
        <tr>
          <td>Username</td>
          <td><input type="text" name="name"></td>
        </tr>
        <tr>
          <td>Amount</td>
          <td><input type="text" name="amount", value="{{item.amount}}"></td>
        </tr>
        <tr>
          <td>Description</td>
          <td><input type="text" name="description", value="{{item.description}}"></td>
        </tr>
        <tr>
          <td><input type="Radio">Personal</td>
          <td><input type="Radio">Business</td>
        </tr>
        <tr>
          <td><input type="submit" value="Edit Tab"></td>
        </tr>
      </table>
    </form>

  </body>
</html>

包含这些文件的存储库如下: vagrant&gt;&gt; PayUp&gt;&gt;此项目的所有文件都在本地计算机上运行 https://github.com/omar-jandali/Udacity-Tournament/tree/master/vagrant/PayUp

0 个答案:

没有答案