我有兩條路線我的應用程序中,如果我要訪問的第二個我得到這個錯誤:如何解決表單是不確定的,Flask?
UndefinedError: 'register_form' is undefined
的register_form中是第一條路,這裏是第一路線:
@abonent_route.route('/')
@abonent_route.route('/', methods=['GET', 'POST'])
def index():
register_form = RegistrationForm()
return render_template('index.html', register_form=register_form)
這是第二路由:
@client_route.route('/client/')
@client_route.route('/client/', methods=['GET', 'POST'])
def index():
form_login = ClientLogin()
return render_template('index.html', form_login=form_login)
而且我初始化我create_app函數內部的路線如下:
from .abonent import abonent_route
app.register_blueprint(abonent_route)
from .client import client_route
app.register_blueprint(client_route)
現在的問題是,如果我取代了客戶端路線一步,所以是abonent上述路線,如果我打開abonent路線,我得到了同樣的錯誤,但有一點不同:
UndefinedError: 'form_login' is undefined
這一次,form_login未定義,另外,如果我再次感動abonent再次將其放置,如果我想參觀客戶端路線,我得到的第一個錯誤是register_form中未定義。
請任何幫助,將不勝感激。
編輯:添加一些代碼
Client main route
:
@client_route.route('/client/', methods=['GET', 'POST'])
def index():
form_login = ClientLogin()
if request.method == 'GET' and request.args.get('next'):
session['next'] = request.args.get('next')
if form_login.validate_on_submit():
user = Client.query.filter_by(
tele = form_login.telephone.data
).first()
if user:
if check_password_hash(user.password, form_login.password.data):
session['client_logged_in'] = user.name
session['client_family'] = user.family
session['client_image'] = user.image
session['client_phone'] = user.tele
if 'next' in session:
next = session.get('next')
session.pop('next')
return redirect(next)
else:
flash('Привет, {}'.format(user.name), 'success')
return redirect(url_for('client.profile'))
else:
flash('Неверные учетные данные.', 'danger')
return redirect(url_for('client.index'))
else:
flash('Неверные учетные данные.', 'danger')
return redirect(url_for('client.index'))
return render_template('index.html', form_login=form_login)
Abonent main route
:
@abonent_route.route('/', methods=['GET', 'POST'])
def index():
register_form = RegistrationForm()
if request.method == 'POST':
if register_form.is_submitted():
if not register_form.terms_agree.data:
flash('Вы должны согласиться с нашим договором и со всеми его пунктами.', 'danger')
return redirect(url_for("abonent.index"))
if register_form.master_salon.data or register_form.master_cto.data or register_form.master_company.data == True:
user = User()
user.name = register_form.name.data
user.family = register_form.family.data
user.bio = register_form.biography.data
if User.query.filter_by(tele=register_form.telephone.data).first():
flash('Этот номер: {} уже использован.'.format(register_form.telephone.data), "warning")
return redirect(url_for('abonent.index'))
else:
user.tele = register_form.telephone.data
user.set_password(register_form.password.data)
db.session.add(user)
db.session.commit()
return redirect(url_for('abonent.confirm', phone=phone))
return render_template('index.html', register_form=register_form)
這裏是到完整的錯誤顯示一個鏈接,這個人是提出如果客戶路線在abonent路線在__init__.py
文件:
另一件事,我忘了提的是,如果試圖打開例如/client/registration
,它會打開沒有任何錯誤,錯誤引發,如果我想訪問/client
這是索引頁面client
爲什麼你有冗餘路由?只有一個是足夠的,因爲兩者都路由相同的路徑和請求,並且是否將'RegistrationForm'和'ClientLogin'導入到您的文件中?並在什麼時候提出這個錯誤?,可能是你應該發佈完整的錯誤追溯到正確的點? –
如果我將這些路由之一替換爲我的** create_app函數**中的其中一個,並嘗試訪問它,那麼如果** abonent **在上面,如果我想打開**/client/**出現一個錯誤:** register_form undefined **,反之亦然,客戶端出現另一個錯誤:** form_login undefined **。 – reznov11
是的,我導入** RegisterForm **在我的** abonent views.py **,但不**客戶端登錄** – reznov11