2012-09-16 14 views
5

Flask'ta bir modüler uygulama yapıyorum ve mevcut Blueprint'imden bir fonksiyona atıfta bulunursam yapı hatası alıyorum, örn. Bir dosyam var userProfiles.py başka bir dosyadaFlask url_for, modüler uygulamada yönlendirme yaparken hata veriyor

@userP.route('/myProfile/', methods=['GET']) 
def showProfile(): 
    ..... 

bir userAccounts.py i

@userA.route('/login/', methods=['GET', 'POST']) 
def login(): 
    ..... 

sahip sonra ben tüm planları kaydeder ve()

app.run olmayan bir main.py var

şimdi showProfile işlevinden url_for ('userA.login) yapmaya çalışıyorum ama a - werkzeug.routing.BuildError - almaya devam ediyorum. Bu sorunu çözemedim ve çevrimiçi olmayan çözümlerin bana yardımcı oldu.

P.S. Url_for işlevi benim şablonumda çalışmaz, bir sebepten dolayı sadece işlevleri almadı, yolun kenarına href olmaktan başka seçeneğim yoktu.

Sadece biraz biraz daha ben hiç yinelenen fonksiyonları hav yok bilgiyi, tüm fonksiyonları eklemek adlarının benzersiz ve url_for yönlendirme her Blueprint İşte

içinde çalışıyor traceback geçerli:

Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1701, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1689, in wsgi_app 
    response = self.make_response(self.handle_exception(e)) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1687, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1360, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1358, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1344, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "/home/cevdet/PycharmProjects/FlaskProjects/jobperfect/userProfiles.py", line 126, in showProfile 
    else: return redirect(url_for('userA.login')) 
    File "/usr/local/lib/python2.7/dist-packages/flask/helpers.py", line 361, in url_for 
    return appctx.app.handle_url_build_error(error, endpoint, values) 
    File "/usr/local/lib/python2.7/dist-packages/flask/helpers.py", line 354, in url_for 
    force_external=external) 
    File "/usr/local/lib/python2.7/dist-packages/werkzeug/routing.py", line 1607, in build 
    raise BuildError(endpoint, values, method) 
BuildError: ('userA.login', {}, None) 
127.0.0.1 - - [17/Sep/2012 23:55:12] "GET /myP 
+1

Mesaj tamamını backtrace. – Blender

+1

Ayrıca, uygulamada her iki planın da kayıtlı olduğu kodu da gösterin. –

cevap

7

Planınızı nasıl eklediniz userA? Eğer, birinci argüman planı tahsis ettiğini değil değişken adı geçerken

Eğer planları ile url_for() kullanılarak, (plan kimlik bilgisi gibi) uç nokta dizesinin öneki planınınadı olmalıdır. Yukarıdaki gibi planı ilan ederse

subapp = Blueprint('profile', __name__) 

@subapp.route('/<username>') 
def fetch_profile(username): 
    pass 

, aşağıda gibi url_for() çağırmalıdır:

url_for('profile.fetch_profile', username=arg)