NameError: global name 'form' is not defined. Flask-MySQL

kynie

i'm new in Python and Flask. I try to create a website where you can add books and write them into a MySQL-database. When I run my Project with PyCharm it works fine until I navigate to the site where I would like to add my books. The Error says: NameError: global name 'form' is not defined. Can someone please help me to fix this? Maybe I write the code at the wrong place, I dont know.

My Code is:

views.py:

from flask import render_template, flash, redirect, session, url_for, request
from flask.ext.login import login_user, logout_user, current_user, login_required
from app import app, db, mysql
from .forms import LoginForm, AddForm, RegForm
from .models import User

@app.route('/books/add/admin', methods=['GET', 'POST'])
def books_add_admin():
    add = AddForm()

    if request.method == 'POST':
        cursor = mysql.connect().cursor()
             '''
             cursor = mysql.get_db().cursor()
             author = request.args.get(form.author.data)
             '''
        test = request.args.get(form.title.data)
        author = request.args.get(form.author.data)
        verlag = request.args.get(form.publisher.data)
        isbn = request.args.get(form.isbn.data)
        auflage = request.args.get(form.edition.data)
        exemplare = request.args.get(form.copies.data)
        kurztext = request.args.get(form.short_text.data)
        cursor.execute("INSERT INTO books (Titel, Autor, Verlag, ISBN, Auflage, Info)
        VALUES (titel, author, verlag, isbn, auflage, info);")

             #cursor = mysql.connect().cursor()
        con.commit()
        curser.close()

And the code of the forms.py:

from flask.ext.wtf import Form
from wtforms import StringField, IntegerField, BooleanField, PasswordField, validators,
TextAreaField
from wtforms.validators import DataRequired, Length


class LoginForm(Form):
    student_number = IntegerField('student_number', validators=[DataRequired()])
    password = PasswordField('password', validators=[DataRequired()])
    #remember_me = BooleanField('remember_me', default=False)

class AddForm(Form):
    title = StringField('title', validators=[DataRequired()])
    author = StringField('author', validators=[DataRequired()])
    publisher = StringField('publisher', validators=[DataRequired()])
    isbn = IntegerField('isbn', validators=[Length(min=10, max=13)])
    edition = IntegerField('edition', validators=[Length(min=1, max=3)])
    copies = IntegerField('copies', validators=[Length(min=1, max=3)])
    short_info = TextAreaField('short_info', validators=[Length(min=0, max=1040)])

class RegForm(Form):
    student_number = IntegerField('student_number', validators=[Length(min=6, max=7)])
    forname = StringField('forname', validators=[DataRequired()])
    surname = StringField('surname', validators=[DataRequired()])
    email = StringField('email', validators=[DataRequired()])
    password = PasswordField('password', validators=[Length(min=6, max=24)])
    password2 = PasswordField('password2', validators=[Length(min=6, max=24)])
Wondercricket

This appears to be the issue:

add = AddForm()

You named your variable add, whereas you are attemping to reference the variable form here:

test = request.args.get(form.title.data)
author = request.args.get(form.author.data)
verlag = request.args.get(form.publisher.data)
isbn = request.args.get(form.isbn.data)
auflage = request.args.get(form.edition.data)
exemplare = request.args.get(form.copies.data)

The easiest solution would to rename your variable:

form = AddForm()

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

Flask: NameError: global name 'redirect' is not defined

NameError: name 'flask' is not defined

NameError: global name 'profiles' is not defined

python: NameError:global name '...‘ is not defined

NameError: global name 'numpy' is not defined

NameError: global name 'logger' is not defined

NameError: global name 'flash' is not defined

NameError: global name 'stealth' is not defined

NameError: global name 'q' is not defined

NameError: global name 'User' is not defined?

NameError: name is not defined Global Declaration

NameError global name 'ImageDraw' is not defined

nameerror: global name is not defined in tkinter

NameError: global name 'text' is not defined

Python-Mysql NameError: global name 'save_to_db' is not defined

flask - NameError: name 'app' is not defined

NameError: global name 'This_is_a_Function_Name' is not defined

NameError: global name 'unicode' is not defined - in Python 3

Is Pandas not importing? 'NameError: global name 'pandas' is not defined'

Python PIL NameError global name Image is not defined

Python: NameError: global name 'foobar' is not defined

NameError: global name 'xrange' is not defined in Python 3

NameError: global name 'valid_month" is not defined

Python NameError: global name 'resolution' is not defined

Python Server NameError: global name 'SocketError' is not defined

NameError: global name 'EventLoop' is not defined - pyglet

Global variable not working NameError: name 'lives' is not defined

Python and tkinter: NameError: global name 'roomChange' is not defined

Python, Tkinter: NameError: global name 'Combobox' is not defined