Jquery получает новое значение после обновления атрибута данных

Я исправил проблему с помощью шаблона Factory Factory . Я объявляю базу данных в третьем модуле и настраиваю ее позже в том же модуле, в котором я запускаю приложение.

Это приводит к следующим импортам:

  • database.py → app.py
  • views.py → app.py
  • database.py → views.py

Нет циклического импорта. Важно убедиться, что приложение было запущено и настроено перед вызовом операций с базой данных.

Вот пример приложения:

app.py

from database import db
from flask import Flask
import os.path
from views import User
from views import people


def create_app():
    app = Flask(__name__)
    app.config['DEBUG'] = True
    app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:////tmp/test.db"
    db.init_app(app)    
    app.register_blueprint(people, url_prefix='')
    return app 


def setup_database(app):
    with app.app_context():
        db.create_all()
    user = User()
    user.username = "Tom"
    db.session.add(user)
    db.session.commit()    


if __name__ == '__main__':
    app = create_app()
    # Because this is just a demonstration we set up the database like this.
    if not os.path.isfile('/tmp/test.db'):
      setup_database(app)
    app.run()

database.py

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

views.py

from database import db
from flask.blueprints import Blueprint


people = Blueprint('people', __name__,
                 template_folder='templates',
                 static_folder='static')


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)


@people.route('/')
def test():
  user = User.query.filter_by(username="Tom").first()
  return "Test: Username %s " % user.username

0
задан Tick Twitch 16 January 2019 в 17:58
поделиться

2 ответа

Метод .data () на объектах jQuery кэширует значение из начального чтения. Последующий вызов .data () сначала заглянет в хранилище данных jQuery и отправит вам это значение. .attr () не будет обновлять хранилище данных, но обновит атрибут в HTML. Используйте .data () или .attr (), но избегайте смешивания и сопоставления.

0
ответ дан witheroux 16 January 2019 в 17:58
поделиться

Не смешивайте это использование attr() и data(). data() кэширует значение, которое он читает из элемента, и не обновляет атрибут. Так что, если вы обновите данные, attr не увидит их. Выберите одно или другое и придерживайтесь его.

0
ответ дан Taplar 16 January 2019 в 17:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: