Форум сайта python.su
models
[code python
from app import db
class User(db.Model):
id = db.Column(db.Integer, primary_key = True)
nickname = db.Column(db.String(64), unique = True)
password = db.Column(db.String(64))
def __repr__(self):
return ‘<User %r>’ % (self.nickname)
]
forms
__author__ = 'qq' from flask.ext.wtf import Form from wtforms import StringField, BooleanField, PasswordField, validators from wtforms.validators import DataRequired class RegForm(Form): nickname = StringField('user', validators = [DataRequired()]) password = StringField('password', validators = [DataRequired()])
from flask import render_template, flash, redirect, request from app import app, db from forms import LoginForm, RegForm from models import User @app.route('/reg', methods=['GET','POST']) def reg(): form = RegForm(request.form) if form.validate_on_submit(): u = User(nickname=form.nickname.data, password=form.password.data) db.session.add(u) db.session.commit() flash('tnx') else: flash('BAD validate') return render_template("reg.html", form = form)
{% block content %}
<h1>Reg</h1>
<form action="" method="post" name="reg">
<p>{{ form.nickname }} username</p>
<p>{{ form.password }} pass</p>
<p><input type="submit" value="reg"></p>
</form>
{% endblock %}
Офлайн
если изменить функцию на такую :
@app.route('/reg', methods=['GET','POST']) def reg(): form = RegForm(request.form) u = User(nickname=form.nickname.data, password=form.password.data) db.session.add(u) db.session.commit() flash('tnx') return render_template("reg.html", form = form)
Офлайн
Если Вы делаете форму как слепок от модели БД да еще и в алхимии, то проще использовать sqlalchemy-wtforms. По Вашему вопросу. Если нет ajax, то неверный шаблон. Куда Вы данные с формы передаете?
Офлайн
Я просто взял первое что в голову пришло, чтобы вообще попробовать. Это мой почти первый опыт программирования, я учусь как бы. Спасибо про sqlalchemy-wtforms. а если не слепок бд ? т.е. данные с формы надо будет прокрутить как то и записать результаты\расчеты в бд ? читал мега учебник фласк. в общем виде понял. Но там совсем тонкие моменты и принципы типа куда передать не раскрыты\либо я не увидел.
Офлайн
где можно найти найти корректный шаблон для решения этой задачи?
Офлайн
Изменил на такое, получаю в браузере при отправке формы
Bad Request
The browser (or proxy) sent a request that this server could not understand.
Form
from flask.ext.wtf import Form from wtforms import StringField, BooleanField, PasswordField from wtforms.validators import DataRequired, Required class RegForm(Form): nickname = StringField('nickname', validators = [DataRequired()]) password = StringField('password', validators = [DataRequired()])
from flask import render_template, flash, redirect, request from app import app, db from forms import LoginForm, RegForm from models import User @app.route('/reg', methods=['GET','POST']) def reg(): form = RegForm(request.form) if request.method == 'POST': nickname = request.form['nickname'] password = request.form['pass'] u = User(nickname, password) db.session.add(u) db.session.commit() flash('tnx') else: flash('BAD validate') return render_template("reg.html", form = form)
Офлайн
Видимо я уже ближе к истине:::
def reg(): form = RegForm() if form.validate_on_submit(): u = User(nickname=form.nickname, password=form.password) db.session.add(u) db.session.commit() flash('tnx') else: flash('BAD validate') return render_template("reg.html", form = form)
Офлайн
Киньте скайп в личку. Все покажу и объясню.
Офлайн