2014-02-07 2 views
0

Я пытаюсь сделать страницу регистрации в моем приложении Flask. Я использую Flask-Security для управления пользователями. Я настроил его правильно; стандартная страница регистрации отображалась правильно. Однако моя модель состоит из нескольких дополнительных обязательных полей, поэтому мне нужно было обновить представление.Дополнительные поля на странице регистрации в flask-security

Мой security_config файл выглядит следующим образом:

from models import * 
from flask_security.forms import ConfirmRegisterForm, Required 

class ExtendedConfirmRegisterForm(ConfirmRegisterForm): 
    first_name = CharField('Voornaam', [Required()]) 
    last_name = CharField('Achternaam', [Required()])   

# Setup Flask-Security 
user_datastore = PeeweeUserDatastore(db, Student, Role, StudentRoleRel) 
security = Security(app, user_datastore, 
     confirm_register_form=ExtendedConfirmRegisterForm) 

Моя форма:

{% extends "base.html" %} 
{% from "security/_macros.html" import render_field_with_errors, render_field %} 
{% include "security/_messages.html" %} 
{% block main%} 
<h1>Registreer</h1> 
<form action="{{ url_for_security('register') }}" method="POST" name="register_user_form"> 
    {{ register_user_form.hidden_tag() }} 
    {{ render_field(register_user_form.first_name) }} 
    {{ render_field(register_user_form.last_name) }} 
    {{ render_field_with_errors(register_user_form.email) }} 
    {{ render_field_with_errors(register_user_form.password) }} 
    {% if register_user_form.password_confirm %} 
    {{ render_field_with_errors(register_user_form.password_confirm) }} 
    {% endif %} 
    {{ render_field(register_user_form.submit) }} 
</form> 
{% endblock %} 

Когда я пытаюсь открыть страницу регистра, я получаю следующее сообщение об ошибке:

AttributeError: 'CharField' object has no attribute '__call__' 

Я не знаю, как это сделать. Как я могу решить эту проблему?

ответ

0

Я сам нашел проблему.

В моем файле конфигурации безопасности, я забыл импортировать TextField (в оригинале, я использовал CharField, но этот тип недоступен)

from models import * 
from flask_security.forms import ConfirmRegisterForm, Required, TextField 

class ExtendedConfirmRegisterForm(ConfirmRegisterForm): 
    first_name = TextField('Voornaam', [Required()]) 
    last_name = TextField('Achternaam', [Required()])   

# Setup Flask-Security 
user_datastore = PeeweeUserDatastore(db, Student, Role, StudentRoleRel) 
security = Security(app, user_datastore, 
     confirm_register_form=ExtendedConfirmRegisterForm) 
+0

это бросает 'InterfaceError: Ошибка параметра 0 связывающую - вероятно неподдерживаемый type' – KJW

+0

эй я получаю 'jinja2.exceptions.UndefinedError: 'flask_security.forms.ConfirmRegisterForm object' не имеет атрибута 'first_name'' – user299709

Смежные вопросы