Как сложно удалить пользователя из базы данных SQLite, используя циклы из представления Flask - PullRequest
0 голосов
/ 02 мая 2019

Я работал над очень простым, может быть, тривиальным приложением для фляг, которое управляет учетными данными пользователей, например на странице системного администратора (изменение имени пользователя, пароля, привилегий, электронной почты).

Сейчас я написал следующий код в HTML:

<div id="signup-box" class="signup-box" style=" background-color:rgb(149, 202, 202); width: 60%;">       
          <table class="table" style="background-color:#ffffff00;">
           <thead >
                <tr>
                  <th style="text-align:center; vertical-align:inherit;">Username</th>
                  <th style="text-align:center; vertical-align:inherit;">Role</th>
                  <th style="text-align:center; background-color:rgba(104, 159, 223, 0.384);">Control</th>
                <tr>
              </thead>
              <tbody>                    
                  {% for i in range(0,lenUser) %}
                  <tr class="tr">

                      <td style="text-align:center; vertical-align:inherit;">{{ users[i] }}</td>
                      <td style="text-align:center; vertical-align:inherit;">{{ roles[i] }}</td>
                      <td style="text-align:center;">
                        <button form="edit_form" type="submit" value="Edit" class="button is-warning is-focused" style="margin-right: 45px;">Edit User</button>                                                           
                        <button form="delete_form" type="submit" value="Delete" class="button is-danger is-focused" style="margin-right: 45px;">Delete User</button>                                                                                       
                        <form id="edit_form" action="{{ url_for('edit_user', id=users.id) }}" method="POST">
                          <input type="hidden" name="_method" value="EDIT">                                                            
                        </form>
                        <form id="delete_form"action="{{ url_for('delete_user', id=users.id) }}" method="POST">
                          <input type="hidden" name="_method" value="DELETE">                                                                                        
                        </form>
                      </td>                          
                  </tr>
     {% endfor %}           
    </tbody>
  </table>
</div>

на Python:

@app.route ("/ delete_user /")

def delete_user():
    if not session.get('logged_in'):
            return redirect(url_for('login'))
    con = sqlite3.connect('sqlite:///accounts.db')
    cur = con.cursor()
    cur.execute('DELETE FROM User WHERE id = "' +  request.args.get('id')+ '"')
    cur.commit()
    con.close()
    return flask.jsonify({'success':"True"})

И как помощник Python для извлечения моих пользователей:

def fetch_users():
        with session_scope() as s:                                
                 usrs = s.query(tabledef.User.username).order_by(tabledef.User.username).all()
                 tblUsrs = df.from_records(usrs)                             
        return(tblUsrs)

Теперь, что он делает, так это то, что он выбирает моих пользователей как информационный фрейм и выводит их по строкам в моей HTML-таблице, что и было задумано.Но я также хочу удалить конкретного пользователя, когда я нажимаю кнопку «Удалить» на странице HTML, верно?Проблема в том, что я не могу найти способ выбрать конкретный идентификатор пользователя из следующих строк:

<form id="delete_form"action="{{ url_for('delete_user', id=users.id) }}" method="POST">
 <input type="hidden" name="_method" value="DELETE"> 
</form>

Как я могу это исправить?Потому что это в цикле, и каждый раз, когда я получаю строку, это строка первой строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...