from flask import Flask, redirect, url_for, render_template, request, flash from models import db, Contact, User from forms import ContactForm from flask_login import LoginManager, current_user, login_user, login_required # Flask app = Flask(__name__) app.config['SECRET_KEY'] = 'my secret' app.config['DEBUG'] = False # Database # app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///book.sqlite' app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@localhost/hp' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(app) # Login login_manager = LoginManager() login_manager.init_app(app) password = 'sintow2020@' @login_manager.user_loader #使用user_loader装饰器的回调函数非常重要,他将决定 user 对象是否在登录状态 def user_loader(id): #这个id参数的值是在 login_user(user)中传入的 user 的 id 属性 user = User() return user @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'GET': return '''
''' name = request.form.get('name') if request.form.get('pw') == password: user = User() login_user(user) return redirect(url_for('index')) return redirect(url_for('login')) @app.route("/") @login_required def index(): ''' Home page ''' return redirect(url_for('contacts')) @app.route("/new_contact", methods=('GET', 'POST')) @login_required def new_contact(): ''' Create new contact ''' form = ContactForm() if form.validate_on_submit(): my_contact = Contact() form.populate_obj(my_contact) db.session.add(my_contact) try: db.session.commit() # User info flash('Contact created correctly', 'success') return redirect(url_for('contacts')) except Exception as ex: db.session.rollback() flash('Error generating contact. {}'.format(ex), 'danger') return render_template('web/new_contact.html', form=form) @app.route("/edit_contact/