登录表单有时会显示,有时则不会显示

时间:2014-06-11 01:15:45

标签: html css python-2.7 flask

我正在使用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;
    }

2 个答案:

答案 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。当我做出这个改变时,一切都正确加载了。