2016-04-12 8 views
0

Şişeyi ve wtformları kullanıyorum. Bir kullanıcı form için bir gönder düğmesini tıkladığında, gönderimin başarılı olduğunu belirten bir mesaj açmak istiyorum. Bunun için, flask güzergahım için varsayılan bir Yanlış değeri olan bir parametrem var. Kullanıcı gönderdiğinde, bunun doğru olmasını isterim, bu yüzden sayfayı yeniden oluşturduğunda, kullanıcıya "Başarı" diyerek ekstra biti göstermeyi bilir. Ancak, parametre her zaman yanlış görünüyor. Flask yönlendirme parametresi hatalı

@app.route('/myPage', methods=['GET', 'POST']) 
def myPage(success=False): 
    print success 

    form = MyForm() 
    if form.validate_on_submit(): 
     print "did validate" 
     return redirect(url_for('myPage', success=True)) 

    return render_template('/MyPage.html', form=form, success=success) 

Ve html benziyor gibi Benim piton ben gerçek olamayacak kadar başarı ayarlamayı deneyin, ancak bu hiçbir kombinasyonunun çalışmıyor gibi görünüyor, hem benim piton ve html yönlendirmeler ise

... 
{% if success %} 
    <div class="alert alert-success alert-dismissable"> 
     <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> User added 
    </div> 
{% endif %} 
... 
<form method="POST" action="{{ url_for('register', success=True) }}"> 
... 

görünüyor. "Başarıyı yazdırdığımda", her zaman yanlış olduğunu söylüyor. Herhangi bir fikir?

cevap

1

Flask, rotanın bir parçasıymış gibi argümanları yönlendirmek için yöntem parametrelerini bağlar. Bakınız documentation.

Dene:

@app.route('/mypage/<int:success>', defaults={'success': 0}) 
def my_page(success): 
    ... 

İstediğin değil muhtemelen /mypage/1 veya /mypage/True gibi bir URL, inşa etmek url_for neden olur.

bir sorgu dizesi bir parametre kullanmak isterseniz, elle istekten almak gerekir:

@app.route('/mypage/') 
def my_page(): 
    success = request.args.get('success', False) 
    ... 

url_for('my_page', success=True) şimdi böyle bir şey üretecek /mypage/?success=True çünkü: bilmediği

Değişken argümanlar hedef son nokta, oluşturulan argümanlara sorgu argümanları olarak eklenir.

+0

Çok teşekkür ederim (url_for docs itibaren), ben "başarı = request.args.get ('başarı', False)" metodu kullanılır, ve bir cazibe gibi çalışır. –