I am unable to import NamerForm from forms.py to controllers.py. Getting ImportError
ImportError: cannot import NamerForm
from application.forms
File Directory structure:
.venv
|____applications
|-__init__.py
|-config.py
|-controllers.py
|-forms.py
|____templates
|-name.html
|____static
|____main.py
main.py
from flask import Flask
import os, application.config
from application.config import LocalDevelopmentConfig
from application.database import db
app = None
def create_app():
app = Flask(__name__, template_folder='templates', static_folder='static')
app.config['SECRET_KEY']='somekey'
if os.getenv('ENV',"development") == "production":
raise Exception("Currently no production config is set up.")
else:
print("Starting Local Development")
app.config.from_object(LocalDevelopmentConfig)
db.init_app(app)
app.app_context().push()
return(app)
app = create_app()
from application.controllers import *
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080)
forms.py
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
class NamerForm(FlaskForm):
name = StringField("write something", validators=[DataRequired()])
submit = SubmitField("Submit")
controllers.py
from flask import Flask,render_template, url_for
from flask import current_app as app
#from app import app
from .forms import NamerForm
#---other app routes--------
@app.route("/name", methods = ['GET', 'POST'])
def name():
name = None
form = NamerForm()
if form.validate_on_submit():
name = form.name.data
form.name.data = ''
return(render_template("name.html", name = name, form = form))
Note that without ‘name’ function the app is running error free.