我正在使用Flask和SQLAlchemy构建个人网站。我在使用/登录路线正常显示时遇到了问题。它工作了,然后我从 auto中更改了我的CSS 中的.page
类边距,然后再次返回,然后我的登录表单完全停止显示。
我能弄清楚的是我做了什么让它们消失 - 我关闭服务器几次并重新启动它,页面没有加载。当我稍后回来时,我重新启动了我的服务器再次并加载了登录页面。我认为它已经解决了#34;但是当我几个小时后回来时,登录页面再次无法加载。我的所有其他扩展HTML页面都正确加载,而不是我登录表单的登录页面。
我没有登录页面的链接锚点 - 我只需输入路线(/ login)即可访问它。
以下是我的相关代码:
views.py (身份验证蓝图)
from flask import render_template, redirect, request, url_for, flash
from flask.ext.login import login_user
from . import auth
from ..models import User
from .forms import LoginForm
@auth.route('/login', methods =['GET', 'POST'])
def login():
form = LoginForm()
"""if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data.first())
if (user is not None) and user.verify_password( form.password.data):
login_user(user, form.remember_me.data)
return redirect(request.args.get('next') or url_for('main.index'))
flash('Invalid username or password.')"""
return render_template('auth/login.html', title = "Log in", form = form)
的layout.html
<!DOCTYPE html>
<title>
{% block title %}
perSimmons
{% endblock %}
</title>
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
<body>
<div>
<ul id="nav">
<li id="banner"><a href="{{ url_for('main.index') }}">{ perSimmons }</a></li>
<li id="links"><a href="#">Blog</a></li>
<li id="links"><a href="#">Resume</a></li>
<li id="links"><a href="#">Contact</a></li>
<li id="links"><a href="#">About</a></li>
</ul>
<br>
<div class=page>
{% block content %}
{% endblock %}
</div>
</div>
</body>
的login.html
{% extends "layout.html" %}
{% block title %}perSimmons - {{title}} {% endblock %}
{% block content %}
<div class=page-header>
<h3>Admin Login</h3>
</div>
<form action="" method="post" name="login">
<p id="user-login">
Username:<br>
{{form.email}}<br>
Password:<br>
{{form.password}}<br>
</p>
<p><input type="submit" value="Log in">{{form.remember_me}}Stay signed-in </p>
</form>
{% endblock %}
的style.css
@font-face {
font-family: 'SourceCodeProRegular';
src: url('fonts/SourceCodePro-Regular.otf.woff');
src: local('SourceCodePro Regular'), local('SourceCodePro'), url('fonts/SourceCodePro-Regular.otf.woff') format('truetype');
}
body { font-family: 'SourceCodeProRegular'; background: #CC3300; }
a, h2 { color: #CC3300; }
h1, h2 { font-family: 'SourceCodeProRegular'; margin: 0; }
h1 { border-bottom: 2px solid #CC3300; }
h2 { font-size: 2em; font-weight: bold; }
h3 { color: #CC3300;}
li { color: #CC3300;}
dl { color: #CC3300;}
p { color: #CC3300;}
#nav {
width: 100%;
float: left;
margin: 0 0 1em 0;
padding: 0;
list-style: none;
background-color: #CC3300;
border-bottom: 5px solid #999966;
border-top: 5px solid #999966;
border-left: 5px solid #999966;
border-right: 5px solid #999966;
}
#nav #banner { font-weight:bold; }
#nav li { float:left; }
#nav li a {
display: block;
padding: 8px 15px;
text-decoration: none;
color: #FFFF66;
border-right: 2px solid #999966;
}
#nav li a:hover {
color:#CC3300;
background-color: #FFFF66;
}
.page {
margin: 2em auto;
width: 55em;
border: 5px solid #999966;
padding: 0.8em;
background: #FFFF66;
}
.entries {
list-style: none;
margin: 0;
padding: 0;
}
.entries li { margin: 0.8em 1.2em; }
.entries li h2 { margin-left: -1em;}
.add-entry {
font-size: 0.9em;
border-bottom: 1px solid #CC3300;
}
.flash {
font-color: #999966;
font-family: 'SourceCodeProRegular';
background: #CC3300;
padding: 0.5em;
border: 1px solid #aacbe2;
}
.error {
background: #f0d6d6;
padding: 0.5em;
}
答案 0 :(得分:0)
您似乎错过了form.csrf_token
。
我的表格在没有此礼物的情况下消失了。请尝试以下方法:
<强>的login.html 强>
{% extends "layout.html" %}
{% block title %}perSimmons - {{title}} {% endblock %}
{% block content %}
<div class=page-header>
<h3>Admin Login</h3>
</div>
<form action="" method="post" name="login">
{{form.csrf_token}}
<p id="user-login">
Username:<br>
{{form.email}}<br>
Password:<br>
{{form.password}}<br>
</p>
<p><input type="submit" value="Log in">{{form.remember_me}}Stay signed-in </p>
</form>
{% endblock %}
请注意添加{{form.csrf_token}}
行。
如果您不使用wtf.quickform
方法,则需要提供此表单才能正确呈现表单。
答案 1 :(得分:0)
身份验证蓝图中login.html
的正确路由为/auth/login
- 而不是/login
。当我做出这个改变时,一切都正确加载了。