2017-04-21 61 views
-1

我有兩條路線我的應用程序中,如果我要訪問的第二個我得到這個錯誤:如何解決表單是不確定的,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文件:

Click to open

另一件事,我忘了提的是,如果試圖打開例如/client/registration,它會打開沒有任何錯誤,錯誤引發,如果我想訪問/client這是索引頁面client

+0

爲什麼你有冗餘路由?只有一個是足夠的,因爲兩者都路由相同的路徑和請求,並且是否將'RegistrationForm'和'ClientLogin'導入到您的文件中?並在什麼時候提出這個錯誤?,可能是你應該發佈完整的錯誤追溯到正確的點? –

+0

如果我將這些路由之一替換爲我的** create_app函數**中的其中一個,並嘗試訪問它,那麼如果** abonent **在上面,如果我想打開**/client/**出現一個錯誤:** register_form undefined **,反之亦然,客戶端出現另一個錯誤:** form_login undefined **。 – reznov11

+0

是的,我導入** RegisterForm **在我的** abonent views.py **,但不**客戶端登錄** – reznov11

回答

0

我必須用我自己是在開玩笑哈哈哈哈,我解決了這個問題。

裏面__init__.py文件在我的客戶端文件夾我配置的路由如下:

from flask import Blueprint 

client_route = Blueprint(
    'client', 
    __name__, 
    template_folder='templates/client', 
    static_folder='../static' 
) 

from . import views 

正如你可以在這裏看到,的index.html必須是客戶端文件夾裏面,當我呈現的index.html我的觀點裏我忘了之前的index.html此處添加客戶端/:

return render_template('client/index.html', form_login=form_login)

有人在看我的主要應用程序模板文件夾,其中另一個index.html保存。

現在一切工作都很順利:),謝謝大家爲您的利益。

相關問題