Ответы пользователя по тегу Flask
  • Передать переменную в blueprint?

    GeraJet
    @GeraJet
    Anykey
    мне нужно передать туда переменную db
    туда это куда? Если в файл модели, то
    from app import db
    
    #пример модели
    class Page(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        title = db.Column(db.String(512))
    Ответ написан
  • Что не так с регистрацией Flask?

    GeraJet
    @GeraJet
    Anykey
    Кратко, после проверки валидации берешь username и password из формы, делаешь запрос по ним в базу и если такой пользователь с таким паролем существует, применяешь метод login_user() из Flask-login
    # -*- coding: utf-8 -*-
    from flask import request, render_template, flash, g, session, redirect, url_for
    from flask.ext.login import login_user, logout_user, current_user, login_required
    from app import db
    from app.models import User
    from app.forms import LoginForm
        
    @app.route('/', methods=['GET', 'POST'])
    def index():
        form = LoginForm()
        if form.validate_on_submit():
            username = request.form['username']
            password = request.form['password']
            user = User.query.filter_by(username=username, password=password).first()
            if user is None:
                flash(u'Неверный логин или пароль', 'error')
                return redirect("/")
            login_user(user)
            return redirect("/")
        return render_template("main/main.html", 
            form = form)
    
    @app.route('logout/')
    def logout():
        logout_user()
        return redirect("/")

    models.py
    from app import db
    
    class User(db.Model):
        __tablename__ = 'users'
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(100))
        username = db.Column(db.String(120), unique=True)
        password = db.Column(db.String(120))
    
        def __init__(self, name, username, password):
            self.name = name
            self.username = username
            self.password = password
    
        def is_authenticated(self):
            return True
    	 
        def is_active(self):
            return True
    
        def is_anonymous(self):
            return False
    
        def get_id(self):
            return unicode(self.id)
    
        def __repr__(self):
            return self.name

    template
    {% with messages = get_flashed_messages() %}
    	{% if messages %}
    	<div class="flash">
    	{% for message in messages %}
    	    {{ message }}
    	{% endfor %}
    	</div>
    	{% endif %}
    {% endwith %}
    
    <form method="POST" action="/login">
        <div>{{ form.username.label }}: {{ form.username(class="css_class") }}</div>
        {% if form.username.errors %}
            <ul class="errors">{% for error in form.username.errors %}<li>{{ error }}</li>{% endfor %}</ul>
        {% endif %}
    
        <div>{{ form.password.label }}: {{ form.password() }}</div>
        {% if form.password.errors %}
            <ul class="errors">{% for error in form.password.errors %}<li>{{ error }}</li>{% endfor %}</ul>
        {% endif %}
        <input type="submit" value="Go">
    </form>
    Ответ написан
  • Flask как обрабатывать select field?

    GeraJet
    @GeraJet
    Anykey
    forms.py
    # -*- coding: utf-8 -*-
    from flask.ext.wtf import Form
    from wtforms import TextField, SelectField
    from wtforms.validators import Required
    
    class WeatherAddForm(Form):
        sost = SelectField("Состояние: ", choices=[
        	("ясно", "ясно"), 
        	("пасмурно", "пасмурно"), 
        	("туман", "туман"), 
        	("дождь", "дождь"), 
        	("снег", "снег")]) 
        temp = TextField('Temp', [Required()])

    views.py
    ...
    def create():
        form = WeatherAddForm()
        if form.validate_on_submit(): 
            rec = Weather(
                sost = request.form['sost'], 
                temp = request.form['temp'])
            db.session.add(rec)
            db.session.commit()
            flash(u'Сведения обновлены!')
            return redirect(url_for('.index'))
        ...
        return render_template("weather/create.html",
            form = form)

    В чем проблема?
    Ответ написан
    4 комментария
  • Что означает expected string or Unicode object, long found?

    GeraJet
    @GeraJet Автор вопроса
    Anykey
    Проблема решилась удалением flask, sqlalchemy, flask-sqlalchemy и установкой конкретных версий (не самых последних) flask==0.9, sqlalchemy==0.7.9, flask-sqlalchemy==0.16
    Ответ написан
    Комментировать