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には何もできません。