Форум сайта python.su
0
Добрый день всем поклонникам Питона! Изучать Питон начал относительно недавно и до сих пор разбирался с непонятками сам или с помощью поисковиков, но в этот раз должен просить о помощи.
Код:
from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_security import SQLAlchemyUserDatastore, Security from datetime import datetime app = Flask(__name__) app.config.from_object('config') from views import * db = SQLAlchemy(app) from models import * user_datastore = SQLAlchemyUserDatastore(db, User, Role) #security = Security(app, user_datastore) # Create a user to test with @app.before_first_request def create_user(): db.create_all() user_datastore.create_user(nickname="Jihn", email='matt@nobien.net', password='123', active=True, confirmed_at=datetime.utcnow()) db.session.commit() if __name__ == '__main__': app.run(debug=True)
Офлайн
39
Конструктивнее не куда: забить на блупринты 
flask-classy - все, что Вам нужно от жизни…
Офлайн
0
К сожалению забить на блупринты не получится, т.к. flask_security весьма активно их использует (во всяком случае мне так показалось). Если не найду решения буду писать велосипед на основе flask-login.
Офлайн
39
Да ну какой велосипед. Побойтесь бога. Там всего-то 10 строк.
А вот flask-security я вижу повелосипедил не-по-детски…
Офлайн
39
Ну и плюс сильная привязка к типу БД. Если мне модель будет нужна вне фласка - то меня в этом случае будет ждать большоооой облом, а обламываться я не люблю 
Офлайн
0
Да собственно скорее всего проблема не во Flask-security. Только что обыграл запуск с полным его отключением. Чтобы понять сколько запускается модуль тупо добавил строку print(“!”).
Итог:
********************************************************
C:\Python34\python.exe C
Work/Projects/Python/Blog/init_app.py
!
!
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
!
!
********************************************************
В процессах висит два python-а. Есть предположение что это потоки фласка, не имеющие отношения к проблеме. На это указывает то, что лишь один процесс прослушивает порт (5000), второй в сеть не лезет или не успеваю зарегистрировать.
Кроме того меня смущает тот факт, что после запуска прослушивания print успевает отработать еще два раза, т.е. в сумме 4 раза выполняется команда print!!!!
Офлайн
39
print вставили где? Код, а то сложно понять…
Офлайн
0
Print поставил непосредственно в контексте модуля:
from flask import Flask from flask_sqlalchemy import SQLAlchemy #from flask_security import SQLAlchemyUserDatastore, Security from datetime import datetime app = Flask(__name__) app.config.from_object('config') from views import * db = SQLAlchemy(app) from models import * ''' user_datastore = SQLAlchemyUserDatastore(db, User, Role) #security = Security(app, user_datastore) # Create a user to test with @app.before_first_request def create_user(): db.create_all() user_datastore.create_user(nickname="Jihn", email='matt@nobien.net', password='123', active=True, confirmed_at=datetime.utcnow()) db.session.commit() ''' print('!') if __name__ == '__main__': app.run(debug=True)
Work/Projects/Python/Blog/init_app.pyОтредактировано Point (Фев. 14, 2015 08:03:59)
Офлайн
39
Запустил. Отключил импорты. Все то же самое. Видимо, это работа сервера разработки. А именно модуля для отслеживания изменений в файлах проекта и его перезапуска. Можно попробовать выполнить с wsgi и посмотреть результат…
P.S. Так в чем вопрос, собственно? Где не работает?
P.S.S. werkzeug 
Отредактировано 4kpt_III (Фев. 14, 2015 08:31:28)
Офлайн
0
однако в БД стали появляться двойные записи (поля не уникальны), т.е. функция def create_user() пробегает два раза.
Офлайн