Как отобразить разные данные списка задач для разных пользователей в flask python - PullRequest
0 голосов
/ 19 апреля 2020

Допустим, я создаю веб-сайт списка задач и хочу отображать разные данные списка задач для разных пользователей. Например, Джон добавляет задачу в свой список задач, и только он может видеть ее, в то время как другие пользователи могут видеть только свои данные списка задач на веб-сайте. В качестве примера можно привести YouTube и ханскую академию, где он отображает разный контент для разных пользователей. Как это сделать в Flask?

HTML:


    <div class="content">
    <form action='/todo/' method="POST">
    <input type="text" placeholder="Enter task..." name="content" id="content">
    <input type="submit" value="Add" name="btn">
    </form>
    <br>
    <form action='/todo/' method="POST">
    <input type="submit" value="Back to home" name="btn">
    </form>
    <br>
    <table class="tb">
        <tr>
            <th>Todo</th>
            <th>Date</th>
            <th>Actions</th>
        </tr>
        {% for task in tasks %}
        <tr>
            <td>{{ task.content }}</td>
            <td>{{ task.date_created.date() }}</td>
            <td><a href="/delete/{{task.id}}">Delete</a></td>
        </tr>
        {% endfor %}
    </table>
    </div>

Python:


    from flask import Flask, render_template, url_for, request, redirect, session
    from flask_sqlalchemy import SQLAlchemy
    from datetime import datetime
    from flask_bootstrap import Bootstrap
    from flask_wtf import FlaskForm
    from wtforms import StringField, PasswordField, BooleanField
    from wtforms.validators import InputRequired, Email, Length
    from werkzeug.security import generate_password_hash, check_password_hash
    from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user

    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'Thisissupposetobesecret!'
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
    app.config['SQLALCHEMY_BINDS'] = {'one':'sqlite:///test1.db',
                                    'two':'sqlite:///test2.db',
                                    'three':'sqlite:///test3.db'}
    db = SQLAlchemy(app)
    Bootstrap(app)
    login_manager = LoginManager()
    login_manager.init_app(app)
    login_manager.login_view = 'login'

    class Todo(db.Model):
        __bind_key__ = 'one'
        id = db.Column(db.Integer, primary_key=True)
        content = db.Column(db.String(200), nullable=False)
        completed = db.Column(db.Integer, default=0)
        date_created = db.Column(db.DateTime, default=datetime.utcnow)

        def __repr__(self):
            return '<Task %r>' % self.id

    @app.route('/todo/', methods=["GET", "POST"])
    @login_required
    def todo():
        if request.method == "POST":
            if request.form['btn'] == "Add":
                words = request.form['content']
                new = Todo(content=words)
                db.session.add(new)
                db.session.commit()
                return redirect('/todo/')
            else:
                return redirect('/home/')
        else:
            tasks = Todo.query.order_by(Todo.date_created).all()
            return render_template('todo.html', tasks=tasks)

    if __name__ == "__main__":
        app.run(debug=False)

1 Ответ

0 голосов
/ 19 апреля 2020

Вы должны иметь модель пользователя, а затем использовать flask для входа в систему. Есть учебники по flask логин. Затем из flask логина вы можете получить текущего пользователя.

Также в модели todo вам понадобится столбец, который показывает, какой пользователь создал jt

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