我有一个模板,允许用户编辑他们的用户信息.
<form method="post">
<table>
<tr>
<td>Username:</td>
<td>{{user['username']}}</td>
</tr>
<tr>
<td>New Password:</td>
<td> <input type="password" name="password"></td>
<td>{% if form.password.errors %} {{form.password.errors}} {% endif %}<td>
</tr>
<tr>
<td>Re-enter Password:</td>
<td> <input type="password" name="confirm_password">
</td>
</tr>
<input type='hidden' name='username' value="{{user['username']}}">
<tr>
<td><input type="submit" value="Submit"></td>
</tr>
</table>
</form>
Run Code Online (Sandbox Code Playgroud)
我还有一个用于处理用户编辑的视图功能.我目前使用的数据库是带有MongoKit模块的MongoDB.到目前为止,我只能在视图功能中做到这一点,但没有运气.
def edit():
username = request.args.get('user')
user = User.find_one({'username':username}) # Is this a correct way of doing it?
form = UserForm(**what should be placed here?**, obj=user)
if request.method == 'POST' and form.validate(): …Run Code Online (Sandbox Code Playgroud) 我使用Flask Framework在我的App构建上遇到了一个小问题.
我正在尝试创建一个简单的用户+权限模块.要归档它,我在用户和权限表之间存在多对多关系.
这是我的模型,形式和路线
模型
user_perm = db.Table('user_perm',
db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
db.Column('perm_id', db.Integer, db.ForeignKey('permissions.id'))
)
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(32), unique=True, nullable=False)
pwdhash = db.Column(db.String(16), nullable=False)
email = db.Column(db.String(128))
permissions = db.relationship('Permission', secondary=user_perm, backref=db.backref('users', lazy='dynamic'))
def __init__(self, username, pwdhash, email, perms):
self.username = unicode(username)
self.pwdhash = pwdhash
self.email = email
self.permissions = perms
def __repr__(self):
return '<User {0}>'.format(self.username)
class Permission(db.Model):
__tablename__ = 'permissions'
id = db.Column(db.Integer)
perm = db.Column(db.String(50), primary_key=True, unique=True, nullable=False)
def …Run Code Online (Sandbox Code Playgroud) 我有一个wtforms表单
class MyForm(Form):
names = SelectField('name', choices=[])
Run Code Online (Sandbox Code Playgroud)
名称字段的选择是动态构建的,并通过ajax调用在模板中呈现.当我提交表单时,它会引发异常"不是一个有效的选择".我不希望表单为我验证名称字段的选择.如何禁用验证?
我在行中有TypeError,我在表单上调用'validate()'.
错误是:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/valery/projects/easy_booking/easy_booking/controllers/users.py", …Run Code Online (Sandbox Code Playgroud) 我正在使用Flask,mongoengine进行项目,我正在尝试从http://docs.mongodb.org/manual/tutorial/write-a-tumblelog-application-with-flask-mongoengine/获取基本的东西.
从上面的链接实现了所有内容后,我在Post中为"tags"添加了一个新字段,当我尝试创建帖子时,我的标签没有显示输入框.
任何帮助表示赞赏.
我的代码如下
class Post(db.Document):
created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
title = db.StringField(max_length=255, required=True)
slug = db.StringField(max_length=255, required=True)
body = db.StringField(required=True)
views = db.IntField(default=0)
category = db.StringField()
tags = db.ListField(db.StringField(max_length=30))
Run Code Online (Sandbox Code Playgroud)
模板
{% macro render(form) -%}
<fieldset>
{% for field in form %}
{% if field.type in ['CSRFTokenField', 'HiddenField'] %}
{{ field() }}
{% else %}
<div class="clearfix {% if field.errors %}error{% endif %}">
{{ field.label }}
<div class="input">
{% if field.type == 'ListField' %}
{% for subfield in …Run Code Online (Sandbox Code Playgroud) 我目前正在金字塔中的某个项目上工作,并且在wtforms SelectField方面存在问题.
我有一个3个SelectField字段:
我可以在视图中加载car_make选项.其余SelectFields(car_model,car_version)的选择我将通过AJAX/javascript在客户端加载(我可以在选择car_make时选择car_model等等).
问题是,当我提交表单时,car_model和car_version会引发"无效选择",因为(在SelectField.pre_validation第431行中)self.choices为空.
我怎样才能解决这个问题?
我有一个带有DataRequired验证器和相关错误消息的Flask-WTF表单.但是,Chrome浏览器似乎忽略了我的错误消息,只显示"请填写此字段".如何让Flask覆盖它并显示我的消息?
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired
class SignupForm(FlaskForm):
first_name = StringField('First Name', validators=[DataRequired(message='Hey, put in your first name!')])
last_name = StringField('Last Name', validators=[DataRequired("What, you can't remember your last name?")])
email = StringField('Email', validators=[DataRequired('Gonna need your email address!')])
password = PasswordField('Password', validators=[DataRequired('Really need a password, Dude!')])
submit = SubmitField('Sign Up')
Run Code Online (Sandbox Code Playgroud) 我的 UploadForm 类:
from app import app
from flask_wtf.file import FileRequired, FileAllowed
from wtforms.fields import MultipleFileField
from wtforms.validators import InputRequired,DataRequired
class UploadForm(FlaskForm):
.
.
.
roomImage = MultipleFileField('Room',validators=[FileAllowed(['jpg', 'png'], 'Image only!'), FileRequired('File was empty!')] )
.
.
.#there are other fields here which are not relevant to the problem at hand
Run Code Online (Sandbox Code Playgroud)
HTML模板
{% extends "base.html" %}
{% block content %}
<h1>Upload Your Images</h1>
<form action="/" enctype="multipart/form-data" method="post" >
{{ form.csrf_token }}
Room<br />
{{form.roomImage()}}
.
.
. <MORE THINGS THAT …Run Code Online (Sandbox Code Playgroud) 我将 WTForms 与 Flask 结合使用,我想集成Bootstrap 表单验证来检查表单中的错误。我有一个基本的登录表单设置,如下所示:
class LoginForm(FlaskForm):
"""Login form."""
email = EmailField(
"Email Address", validators=[DataRequired(), Email(), Length(min=6, max=40)]
)
password = PasswordField(
"Password", validators=[DataRequired()]
)
def __init__(self, *args, **kwargs):
"""Create instance."""
super(LoginForm, self).__init__(*args, **kwargs)
self.user = None
def validate(self):
"""Validate the form."""
initial_validation = super(LoginForm, self).validate()
if not initial_validation:
return False
self.user = User.query.filter_by(email=self.email.data).first()
if not self.user:
self.email.errors.append("Unknown email address!")
return False
if not self.user.check_password(self.password.data):
self.password.errors.append("Invalid password!")
return False
if not self.user.verified:
self.email.errors.append("Please verify your email address!") …Run Code Online (Sandbox Code Playgroud) 如何设置 FileSizeLimit 验证flask_wtf.file.FileField?
wtforms ×10
flask ×8
python ×8
python-3.x ×2
bootstrap-4 ×1
jinja2 ×1
mongoengine ×1
mongokit ×1
pyramid ×1
python-2.7 ×1
sqlalchemy ×1
validation ×1