我想通过使用flask-script来实现一个可以停止烧瓶应用的命令.我已经搜索了一段时间的解决方案.因为框架不提供"app.stop()"API,所以我很好奇如何编写代码.我正在研究Ubuntu 12.10和Python 2.7.3.
我试图在flask-login的视图中使用当前用户.所以我试着g object
我分配flask.ext.login.current_user给g对象
@pot.before_request
def load_users():
g.user = current_user.username
Run Code Online (Sandbox Code Playgroud)
如果用户是正确的,它可以工作.但是当我使用错误的凭据进行注册或登录时,我收到此错误
AttributeError: 'AnonymousUserMixin' object has no attribute 'username'
请问我在哪里错了...
有人使用Flask-Security扩展进行身份验证吗?如何使注册视图起作用?
http://packages.python.org/Flask-Security/customizing.html
我指的是上面的链接.
@app.route('/register', methods=['GET'])
def register():
return render_template('security/register_user.html')
Run Code Online (Sandbox Code Playgroud)
我不想扩展默认类,我只想在我的站点布局中包装默认注册视图,所以我这样做了.
{% extends "layout.html" %}
{% block title %}upload{% endblock %}
{% block body %}
{% from "security/_macros.html" import render_field_with_errors, render_field %}
{% include "security/_messages.html" %}
<h1>Register</h1>
<form action="{{ url_for_security('register') }}" method="POST" name="register_user_form">
{{ register_user_form.hidden_tag() }}
{{ render_field_with_errors(register_user_form.email) }}
{{ render_field_with_errors(register_user_form.password) }}
{% if register_user_form.password_confirm %}
{{ render_field_with_errors(register_user_form.password_confirm) }}
{% endif %}
{{ render_field(register_user_form.submit) }}
</form>
{% include "security/_menu.html" %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误?
werkzeug.routing.BuildError
BuildError: ('security.register', {}, None)
Run Code Online (Sandbox Code Playgroud) 我正在使用烧瓶开发服务器环境与Flask,Gevent和web socket进行项目.我用过flask_login.这里
SessionID在数据库中,并在客户端断开连接后将其删除.如何获得总活动连接
from flask_login import *
login_manager = LoginManager()
login_manager.setup_app(app)
@app.route("/", methods=["GET", "POST"])
def login():
login_user([username], remember):
@app.route("/logout")
@login_required
def logout():
logout_user()
Run Code Online (Sandbox Code Playgroud)flask python-2.7 flask-sqlalchemy flask-login flask-extensions
我正在研究Flask Mega-Tutorial,我遇到了这段代码:
class User(db.Model):
id = db.Column(db.Integer, primary_key = True)
nickname = db.Column(db.String(64), unique = True)
email = db.Column(db.String(120), unique = True)
role = db.Column(db.SmallInteger, default = ROLE_USER)
posts = db.relationship('Post', backref = 'author', lazy = 'dynamic')
def is_authenticated(self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def get_id(self):
return unicode(self.id)
def __repr__(self):
return '<User %r>' % (self.nickname)
Run Code Online (Sandbox Code Playgroud)
is_authenticated,is_active和is_anonymous对我来说似乎很奇怪 - 他们何时会返回除预定义值以外的任何内容?
有人可以向我解释为什么Flask-Login让我使用这些看似无用的方法吗?
我在Flask上创建了一个简单的博客,我正在尝试使用Flask-Admin来管理我的帖子.如果我去管理区域,我可以看到来自数据库的所有帖子的列表,但是当我尝试创建一个新帖子时,我得到了下一个错误:
Failed to create model. __init__() takes exactly 4 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)
这是我的帖子模型:
class Post(db.Model):
__tablename__ = 'news'
nid = db.Column(db.Integer, primary_key = True)
title = db.Column(db.String(100))
content = db.Column(db.Text)
created_at = db.Column(db.DateTime)
def __init__(self, title, content):
self.title = title.title()
self.content = content
self.created_at = datetime.datetime.now()
Run Code Online (Sandbox Code Playgroud)
这是我将模型添加到UI的代码:
from flask import Flask, session
from models import db, Post
from flask.ext.admin import Admin
from flask.ext.admin.contrib.sqlamodel import ModelView
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:pass@localhost/appname'
db.init_app(app)
admin = Admin(app)
admin.add_view(ModelView(Post, db.session))
Run Code Online (Sandbox Code Playgroud)
我可以通过管理面板编辑模型,但不能创建新模型.我知道我错过了一些非常愚蠢的东西,但我无法弄清楚它是什么.
编辑:如果我没有在模型上实现init …
我偶然发现了这篇文章并遵循了所有步骤.但pyDev不会看到我的烧瓶扩展,这真的很烦人.只有一件事(我认为这是关键):
Touch /site-packages/flaskext/__init__.py
Touch我认为是unix util.在Windows上是否有相同的功能?
我的login终点看起来像
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
print request.form # debug line, see data printed below
user = User.get(request.form['uuid'])
if user and hash_password(request.form['password']) == user._password:
login_user(user, remember=True) # change remember as preference
return redirect('/home/')
else:
return 'GET on login not supported'
Run Code Online (Sandbox Code Playgroud)
当我使用测试时curl,GET调用看起来像
? ~PYTHONPATH ? ? 43± ? curl http://127.0.0.1:5000/login/
GET on login not supported
Run Code Online (Sandbox Code Playgroud)
但是POST,我无法访问表单数据并获取HTTP 400
? ~PYTHONPATH ? ? 43± ? curl -d "{'uuid': 'admin', 'password': …Run Code Online (Sandbox Code Playgroud) 我在使用Flask-Cache时遇到了问题.我需要在需要的基础上进行缓存,方法是定义一个配置变量,用户可以设置该变量来启用或禁用缓存.
我正在使用Flask-Cache进行缓存
cache = Cache(config = {'CACHE_TYPE':'redis'})
app = Flask(名字)
初始化缓存
cache.init_app(APP)
清除缓存
使用app.app_context():
Run Code Online (Sandbox Code Playgroud)cache.clear()
并使用缓存(在views.py中)作为
@ app.route('/',methods = ['GET'])
@validate_access(current_user,"read")
@要求登录
@ cache.memoize()
def get_values(id):
Run Code Online (Sandbox Code Playgroud)return get_values()
在使用Flask-Cache时,我没有获得正确的启用/禁用缓存的方法.是否有一种标准方式可以完全启用/禁用缓存行为.
class Parent(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(120))
def __repr_(self):
return '<Parent %r>' % (self.name)
admin.add_view(ModelView(Parent, db.session))
class Child(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(120))
parent = db.Column(db.Integer, db.ForeignKey(Parent))
admin.add_view(ModelView(Child, db.session))
Run Code Online (Sandbox Code Playgroud)
你好 -
上面的代码是我试图创建的flask-admin页面的示例.目标是在Child的创建页面上有一个名称文本框和一个下拉选择父项.
通过上述设置,只有名称字段.父下拉框丢失.
任何想法如何实现它?
flask ×10
flask-extensions ×10
python ×9
flask-login ×4
python-2.7 ×2
caching ×1
eclipse ×1
flask-cache ×1
pydev ×1
web ×1