Python Flask Jinja Как создать динамический c столбец с оператором if else - PullRequest
0 голосов
/ 17 марта 2020

У меня есть веб-приложение. Это часть моего кода:
mailaliases. html

{% extends "bootstrap/base.html" %}

{% block title %}
Strona do edycji aliasów
{% endblock %}

{% block styles %}
{{super()}}
<link rel="stylesheet" href="{{url_for('.static', filename='starter-template.css')}}">
{% endblock %}

{% block content %}
    <nav class="navbar navbar-inverse navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Badaj.to / SLA</a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Główna</a></li>
             <li><a href="{{ url_for('change_password_blueprint.changepassword') }}">Zmiana hasła</a></li>
             <li><a href="{{ url_for('admin_dashboard_blueprint.admindashboard') }}">Panel Administratora</a></li>
             <li><a href="{{ url_for('logout') }}">Wyloguj się</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>


    <div class="container">

      <div class="starter-template">
          </br></br>
            <p class="lead"><h1>Wybierz użytkownika, któremu chcesz ustawić alias.<br></B></p>
                <font size="4">
                  {{ tablepoczta }}
                </font>
      </div>

    </div><!-- /.container -->
{% endblock %}

здесь определены классы

class UserPoczta(UserMixin, dbpoczta.Model):
    __bind_key__ = 'dbpocztamysql'
    __tablename__ = "flask_test_poczty"
    id = dbpoczta.Column(dbpoczta.Integer, primary_key=True)
    address = dbpoczta.Column(dbpoczta.String(60), unique=True)
    goto = dbpoczta.Column(dbpoczta.String(800), unique=False)
    active = dbpoczta.Column(dbpoczta.Integer, unique=False)

class AliasesResult(Table):
    __bind_key__ = 'dbpocztamysql'
    id = Col('Id', show=False)
#    id = Col('Id')
    address = Col('Adres e-mail')
    goto = Col('Aliasy')
    active = Col('Aktywny')
    editpoczta = LinkCol('Edytuj', 'editpoczta', url_kwargs=dict( id = 'id'))

class UserPocztaForm(Form):
    __bind_key__ = 'dbpocztamysql'
    __tablename__ = "flask_test_poczty"
    id = StringField('Id')
    address = StringField('e-mail')
    goto = StringField('Aliasy')
    active = StringField('Aktywny')

здесь есть маршрут

@app.route('/mailaliases')
@login_required
def mailaliases():
    if current_user.role == 'admin':
        qrypoczta = dbpoczta.session.query(UserPoczta).order_by(UserPoczta.address.desc())
        resultspoczta = qrypoczta.all()
        tablepoczta = AliasesResult(resultspoczta)
        tablepoczta.border = True
        return render_template('mailaliases.html', tablepoczta=tablepoczta)
    return render_template('notauthorized.html', name=current_user.username)

I хотел бы добавить столбец в таблицу на сайте, например имя столбца error_addresses. В этой таблице должны быть адреса, которые находятся в столбце goto в строке и не существуют в адресах столбца в базе данных. Эта таблица показывает адрес электронной почты и псевдонимы в столбце goto. Например, у меня есть письмо типа mail1@mail.pl, mail2@mail.pl, mail3@mail.pl, и если кто-нибудь добавит к псевдониму alia1@mail.pl адреса mail1@mail.pl, mail20@mail.pl, я бы хотел показать mail20@mail.pl в новом столбце error_addresses в строке с этими псевдонимами.

1 Ответ

0 голосов
/ 18 марта 2020

Я пробовал использовать l oop для и если

if current_user.role == 'admin':
    if userpoczta:
        form = UserPocztaForm(formdata=request.form, obj=userpoczta)
        if request.method == 'POST' and form.validate():
            save_changes(userpoczta, form)
            for adresy in dbpoczta.session.query(UserPoczta.address):
                if userpoczta.goto not in adresy:
                    return ("error")
                return redirect('/mailaliases')
        return render_template('edit_aliases.html', form=form)
    else:
        return 'Error loading #{id}'.format(id=id)
return render_template('notauthorized.html', name=current_user.username)
...