2017-05-17 4 views
0

OpenIDを削除して標準のユーザー名/パスワードログインを行い、インデックス/ログインページに移動しようとするとOpenIDエラーが発生します。アプリケーションでOpenIDを取り除こうとしたときにエラーが発生しましたUndefinedError: 'app.forms.RegistrationFormオブジェクト'に 'openid'属性がありません

フラスコ

で見つかったエラー
UndefinedError: 'app.forms.RegistrationForm object' has no attribute 'openid' 

神社

jinja2.exceptions.UndefinedError 
UndefinedError: 'app.forms.RegistrationForm object' has no attribute 'openid' 
Traceback (most recent call last) 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/flask/app.py", line 1997, in __call__ 

return self.wsgi_app(environ, start_response) 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/flask/app.py", line 1985, in wsgi_app 

response = self.handle_exception(e) 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/flask/app.py", line 1540, in handle_exception 

reraise(exc_type, exc_value, tb) 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/flask/app.py", line 1982, in wsgi_app 

response = self.full_dispatch_request() 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/flask/app.py", line 1614, in full_dispatch_request 

rv = self.handle_user_exception(e) 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/flask/app.py", line 1517, in handle_user_exception 

reraise(exc_type, exc_value, tb) 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/flask/app.py", line 1612, in full_dispatch_request 

rv = self.dispatch_request() 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/flask/app.py", line 1598, in dispatch_request 

return self.view_functions[rule.endpoint](**req.view_args) 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/flask_openid.py", line 500, in decorated 

return f(*args, **kwargs) 

File "/home/jsnyder10/Documents/45/app/views.py", line 104, in login 

form=form) 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/flask/templating.py", line 134, in render_template 

context, ctx.app) 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/flask/templating.py", line 116, in _render 

rv = template.render(context) 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/jinja2/environment.py", line 1008, in render 

return self.environment.handle_exception(exc_info, True) 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/jinja2/environment.py", line 780, in handle_exception 

reraise(exc_type, exc_value, tb) 

File "/home/jsnyder10/Documents/45/app/templates/login.html", line 2, in top-level template code 

{% extends "base.html" %} 

File "/home/jsnyder10/Documents/45/app/templates/base.html", line 66, in top-level template code 

{% block content %}{% endblock %} 

File "/home/jsnyder10/Documents/45/app/templates/login.html", line 39, in block "content" 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/jinja2/environment.py", line 430, in getattr 

return getattr(obj, attribute) 

UndefinedError: 'app.forms.RegistrationForm object' has no attribute 'openid' 

からデバッガでのエラーデバッガは、あなたのWSGIアプリケーションで例外をキャッチしました。これでエラーにつながったトレースバックを見ることができます。

ここviews.py

from flask import render_template, flash, redirect, session, url_for, request, \ 
g, jsonify 
from flask_login import login_user, logout_user, current_user,  login_required 
from flask_sqlalchemy import get_debug_queries 
from flask_babel import gettext 
from datetime import datetime 
from guess_language import guessLanguage 
from app import app, db, lm, oid, babel 
from .forms import LoginForm, EditForm, PostForm, SearchForm, RegistrationForm 
from .models import User, Post 
from .emails import follower_notification 
from .translate import microsoft_translate 
from config import POSTS_PER_PAGE, MAX_SEARCH_RESULTS, LANGUAGES, \ 
DATABASE_QUERY_TIMEOUT 

@app.route('/', methods=['GET', 'POST']) 
@app.route('/index', methods=['GET', 'POST']) 
@app.route('/index/<int:page>', methods=['GET', 'POST']) 
@login_required 
def index(page=1): 
form = PostForm() 
if form.validate_on_submit(): 
    language = guessLanguage(form.post.data) 
    if language == 'UNKNOWN' or len(language) > 5: 
     language = '' 
    post = Post(body=form.post.data, timestamp=datetime.utcnow(), 
       author=g.user, language=language) 
    db.session.add(post) 
    db.session.commit() 
    flash(gettext('Your post is now live!')) 
    return redirect(url_for('index')) 
posts = g.user.followed_posts().paginate(page, POSTS_PER_PAGE, False) 
return render_template('index.html', 
         title='Home', 
         form=form, 
         posts=posts) 

@app.route('/login', methods=['GET', 'POST']) 
@oid.loginhandler 
def login(): 
if g.user is not None and g.user.is_authenticated: 
    return redirect(url_for('index')) 
form = RegistrationForm() 
if form.validate_on_submit(): 
    session['remember_me'] = form.remember_me.data 
return render_template('login.html', 
         title='Sign In', 
         form=form) 

用のindex.html

<!-- extend base layout --> 
{% extends "base.html" %} 

{% block content %} 
<h1>{{ _('Hi, %(nickname)s!', nickname=g.user.nickname) }}</h1> 
{% include 'flash.html' %} 
<div class="well"> 
    <form class="form-horizontal" action="" method="post" name="post"> 
     {{ form.hidden_tag() }} 
     <div class="control-group{% if form.post.errors %} error{% endif %}"> 
      <label class="control-label" for="post">{{ _('Say something:') }}</label> 
      <div class="controls"> 
       {{ form.post(size=30, maxlength=140) }} 
       {% for error in form.post.errors %} 
        <span class="help-inline">[{{ error }}]</span><br> 
       {% endfor %} 
      </div> 
     </div> 
     <div class="control-group"> 
      <div class="controls"> 
       <input class="btn btn-primary" type="submit" value="{{ _('Post!') }}"> 
      </div> 
     </div> 
    </form> 
</div> 
{% for post in posts.items %} 
    {% include 'post.html' %} 
{% endfor %} 
<ul class="pager"> 
    {% if posts.has_prev %} 
    <li class="previous"><a href="{{ url_for('index', page=posts.prev_num) }}">{{ _('Newer posts') }}</a></li> 
    {% else %} 
    <li class="previous disabled"><a href="#">{{ _('Newer posts') }}</a></li> 
    {% endif %} 
    {% if posts.has_next %} 
    <li class="next"><a href="{{ url_for('index', page=posts.next_num) }}">{{ _('Older posts') }}</a></li> 
    {% else %} 
    <li class="next disabled"><a href="#">{{ _('Older posts') }}</a></li> 
    {% endif %} 
</ul> 
{% endblock %} 

コード誰かがapp.formsかを説明することができためlogin.htmlと

<!-- extend base layout --> 
{% extends "base.html" %} 

{% include 'flash.html' %} 
<div class="well"> 
    <h3>{{ _('Please Sign In') }}</h3> 
    <form class="form" action="" method="post" name="login"> 
     {{ form.hidden_tag() }} 
     <label class="control-label">{{ _('Enter your UserID here:') }}</label> 
      <div class="controls"> 
       {{ form.username(size=80, class="span4") }} 
       {% for error in form.username.errors %} 
        <span class="help-inline">[{{ error }}]</span><br> 
       {% endfor %} 
      </div> 
</div> 
{% endblock %} 

コードのためのコードがあります。登録フォームは実際にやっている?どこにでも私のコードにはありません。私がPythonでコードを実行しても、app.formsには何もできません。

答えて

0

私のlogin.htmlテンプレートでは、それを参照するコードがあり、htmlで角括弧を使って無効にしていたにもかかわらず、Flaskはそれをとにかく読み続けてエラーを投げ捨てました。

自分自身にレッスンしても、フラッシュは無視されても無視されず、無視されたHTMLコードにエラーがあるとクラッシュします。

関連する問題