2012-07-29 73 views
5

Esta es mi primera publicación en StackOverflow así que Hola a todos.Flask-WTForms no puede encontrar WTForms en el directorio de mi proyecto

Estoy haciendo una aplicación de blog para aprender Python y Flask y me gustaría lanzarlo en Google App Engine. Lamentablemente, tengo un pequeño problema con la importación de WTForms a la aplicación. Actualmente estoy usando Flask 0.9, WTForms 1.0.1 y Flask-WTForms 0.8. He agregado la carpeta flaskext_wtf a la ruta raíz de mi proyecto pero recibo un error del archivo html5.py.

File "/Users/lucas/Workspace/blog/flask_wtf/html5.py", line 1, in <module> 
from wtforms import TextField 
File "/Users/lucas/Workspace/blog/flask/exthook.py", line 86, in load_module 
raise ImportError('No module named %s' % fullname) 
ImportError: No module named flask.ext.wtf.wtforms 

Parece que trata de encontrar wtforms dentro de la ruta de extensión en lugar de la ruta de mi proyecto. ¿Cómo puedo informar al archivo html5.py para buscar las formas de reloj en la raíz?

Éstos son fuentes de mi proyecto - https://bitbucket.org/lucas_mendelowski/wblog/src

+0

Hola Lucas, realmente deberías considerar el uso de VirtualEnv tus proyectos de Python. Consulte este libro en línea gratuito para obtener una guía completa sobre una buena estructura de proyecto de Flask: [http://exploreflask.com] (http://exploreflask.com) – nighthawk454

Respuesta

0

Tienes importación incorrecta. Probablemente esté haciendo:

from flask.ext.wtf import wtforms 

No hay tal módulo. lugar que debe hacer:

from flask.ext.wtf import Form, TextField 

Si desea reproductores HTML5, sólo tiene que utilizar la siguiente. Por ejemplo, puede importar campo URLy como

from flask.ext.wtf.html5 import URLField 
+0

Gracias por su respuesta, pero consulte el código antes de responder la pregunta. . En mi archivo de solicitud tengo: del formulario de importación de frasco.ext.wtf (que es correcto, creo). Pero en el archivo html5.py en el Flask-WTForms hay: from wtforms import TextField que está mapeado a: flask.ext.wtf.wtforms. – Lucas

+0

Creo que debería usar Flask-WTF y no WTForms de forma independiente. – codegeek

1

Creo que, finalmente, me las arreglo con este tema (pero no estoy seguro de si es la manera correcta).

Cambiar las importaciones de estos archivos:

1) flaskwtf/init_.py

De:

from flask.ext.wtf import html5 
from flask.ext.wtf.form import Form 
from flask.ext.wtf import recaptcha 

from flask.ext.wtf.recaptcha.fields import RecaptchaField 
from flask.ext.wtf.recaptcha.widgets import RecaptchaWidget 
from flask.ext.wtf.recaptcha.validators import Recaptcha 

Para:

import html5 
from form import Form 
import recaptcha 

from recaptcha.fields import RecaptchaField 
from recaptcha.widgets import RecaptchaWidget 
from recaptcha.validators import Recaptcha 

2) flaskwtf/Reconocer texto/init_ .py:

Desde:

from flask.ext.wtf.recaptcha import fields 
from flask.ext.wtf.recaptcha import validators 
from flask.ext.wtf.recaptcha import widgets 

Para:

import fields 
import validators 
import widgets 

También hemos publicado una solución en github - https://github.com/rduplain/flask-wtf/issues/46#issuecomment-7376577

0

su importación está mal. Además, asegúrese de instalar Flask-WTF que instala automáticamente WTForm.

En cuanto a la importación de los campos va, de acuerdo con los documentos ..

From version 0.9.0, Flask-WTF will not import anything from wtforms 
you need to import fields from wtforms. 


    from flask_wtf import Form 
    from wtforms import TextField 
    from wtforms.validators import DataRequired 

    class MyForm(Form): 
     name = TextField('name', validators=[DataRequired()]) 

Por favor, revise la Flask-WTF quick start guide.

2

Creo que su Virtualenv no tiene el módulo Flask-WTF. Escribe el siguiente comando en la línea de comandos en virtualenv

pip install Flask-WTF 

o puede hacer esto, pero no se recomienda.

easy_install Flask-WTF 
Cuestiones relacionadas