@aleks0010
Пытаюсь в Python и Си

Как автоматически заполнять формы Flask-WTF?

Есть база данных с ссылками
Есть профиль пользователя, в котором я хочу выводить в таблицу все ссылки, связанные с этим пользователем
Я хочу, чтобы пользователь мог изменять некоторые колонки строки базы данных через эту таблицу
Я делаю это вот так:
profile.html :
spoiler

{% extends 'base.html' %}

{% block content %}
<ul class"userdata">
  <li>Username: {{ current_user.username }}</li>
  <li>Email:  {{ current_user.email }}</li>
  <li><a href="#">Change password</a></li>
</ul>
<h3>Your links list</h3>
<table border="1">
  <tr>
    <th>shortlink</th>
    <th>stats</th>
    <th>privat</th>
  </tr>
  {% for link in current_user.links %}
  <tr>
    <form class="" method="post">
      {{ link_form.hidden_tag() }}
      <th>{{ link_form.shortlink() }}</th>
      <th>{{ link.count }}</th>
      <th>{{ link_form.privat_stats() }}</th>
      <th>{{ link_form.save() }}</th>
    </form>
  </tr>
  {% endfor %}
</table>
{% endblock %}

таблицы в БД сделаны через SQLalchemy и выглядят так:
spoiler

from werkzeug.security import check_password_hash
from app import db, login_manager
from flask_login import UserMixin

@login_manager.user_loader
def load_user(user_id):
    return Users.query.get(user_id)

class Users(db.Model, UserMixin):

    __tablename__ = "Users"
    id = db.Column(db.Integer, primary_key = True)
    username = db.Column(db.String(64), unique = True, index = True)
    email = db.Column(db.String(64), unique = True, index = True)
    password = db.Column(db.String(120))

    links = db.relationship('Links', back_populates = 'user')    # two-side relationship with Links

    def check_password(self, password):
        return check_password_hash(self.password, password)

class Links(db.Model):

    __tablename__ = 'Links'
    id = db.Column(db.Integer, primary_key = True, unique = True)
    user_id = db.Column(db.Integer, db.ForeignKey('Users.id'))   # points to id in Users table
    longlink = db.Column(db.Text)
    shortlink = db.Column(db.Text)
    privat_stats = db.Column(db.Boolean)
    count = db.Column(db.Integer)

    user = db.relationship('Users', back_populates = 'links', uselist = False) # two-side relationship with Users

ну и код ф-ции, отвечающей за переход в профиль:
spoiler
@app.route('/profile')
@login_required
def profile():
    link_form = LINKform()
    if link_form.validate_on_submit():
        pass
    return render_template('profile.html', link_form = link_form)

в браузере это выглядит так:
5d34deaf2f17a146047146.png
Как автоматически заполнить поля "shortlink" и "privat" данными из БД ?
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
У вас в шаблоне код поля ссылки не содержит значения этой ссылки.
Каждое поле должно быть примено таким:
<th>{{ link_form.shortlink(value=link.shortlink) }}</th>

Значение берется из объекта записи ссылки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
25 авг. 2019, в 22:35
1000 руб./за проект
25 авг. 2019, в 22:10
3000 руб./за проект
25 авг. 2019, в 21:50
6000 руб./за проект