2013-02-10 31 views
15

Kimlik doğrulama için hiç kimse Flask-Security uzantısını kullandı mı? Kayıt görünümünü nasıl çalıştırabilirim?Flask-Güvenlik kayıt görünümü nasıl kullanılır?

http://packages.python.org/Flask-Security/customizing.html

Yukarıda bağlantı bahsediyorum. Varsayılan sınıfını genişletmek istemiyorum

@app.route('/register', methods=['GET']) 
def register(): 
    return render_template('security/register_user.html') 

, ben sadece bunu böylece sitemde düzeninde varsayılan kayıt görünümü sarmak istiyorum.

{% 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 %} 

Ve aşağıdaki hatayı alıyorum?

werkzeug.routing.BuildError 
BuildError: ('security.register', {}, None) 
+0

onun bir yazım hatası olabilir "Kayıt" yerine "regsiter" olarak yazılır. – codegeek

+0

Sadece yazım sırasında yazdığım bir yazım hatası oldu .... –

cevap

0

Gerçekten Flask-Güvenlik kullanmadıysanız ancak Builderror şişesi bir URL'ye security.register görünümü bağlamak edemez gerçeği bahsediyor. Güvenlik, planın adıdır. Bu yüzden manzarayı aşağıdaki gibi çağırmayı denemenizi tavsiye edebilir miyim? App.route yerine security.route'u kullanın.

@security.route('/register', methods=['GET']) 
def register(): 
    return render_template('security/register_user.html') 
+0

Hayır şans, bu bana verir TipError: 'NoneType' nesne callable değil –

29

Görünümü oluşturmanıza gerek yoktur. Flask-Security'ye varsayılan bir tane dahildir. Sadece kendi şişe uygulaması config etkinleştirmek gerekir: Bununla

app = Flask(__name__) 
app.config['SECURITY_REGISTERABLE'] = True 

, '/ kayıt' rota çalışması gerekir. İstenirse
URL'yi değiştirmek için başka bir yapılandırma değer vardır:

app.config['SECURITY_REGISTER_URL'] = '/create_account' 

Diğer Matara-Güvenlik yapılandırma bilgileri burada bulabilirsiniz: Eğer burada yayınlanan ancak görünüm işlevini ne zaman http://pythonhosted.org/Flask-Security/configuration.html

+1

Bu cevap formu çalışma için bana yardımcı oldu, ancak tam Flask ve Benim gibi Python yenileri: Uygulamanızda ilk önce güvenliği başlatmalısın. Buraya bakın: http://pythonhosted.org/Flask-Security/quickstart.html/register/endpoint'i etkinleştirmeye çalışıyordum ama hiç çalışmadım çünkü güvenlik örneğimi hiç başlatmadım. – lawicko

+0

Çözüm için teşekkür ederiz. Bu benim sorunumu çözdü, ancak farklı bir hata iletisi ile sunulmakta idi. Gelecekte Google çalışanlarına yardımcı olması durumunda burayı burada bırakacağım - ve umarım bu zamanı takip etmeye çalışırken harcadığım zamanı kaydederim ... werkzeug.routing.BuildError: 'security.register' bitiş noktası için URL oluşturamadı bunun yerine 'security.login' demek istediniz? – Bletch