2012-09-16 7 views
5

मैं फ्लास्क में एक मॉड्यूलर एप्लिकेशन बना रहा हूं, और यदि मैं अपने वर्तमान ब्लूप्रिंट जैसे से किसी अन्य ब्लूप्रिंट में फ़ंक्शन का संदर्भ देता हूं तो मुझे बिल्ड त्रुटि मिलती रहती है मेरे पास फ़ाइल उपयोगकर्ता है Profiles.pyफ्लास्क url_for मॉड्यूलर एप्लिकेशन में रूटिंग करते समय त्रुटि देता है

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

अन्य फ़ाइल में एक userAccounts.py मैं

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

है और फिर मैं एक main.py कि सभी ब्लूप्रिंट पंजीकृत करता है और app.run करता है()

है

अब मैं अपने शोप्रोफाइल फ़ंक्शन से url_for ('userA.login) करने की कोशिश कर रहा हूं लेकिन मुझे एक - werkzeug.routing.BuildError -। मैं इसे हल करने में सक्षम नहीं हूं और ऑनलाइन समाधानों में से कोई भी मेरी मदद नहीं कर पाया है।

पीएस Url_for फ़ंक्शन मेरे टेम्पलेट्स में काम नहीं करता है, किसी कारण से यह केवल फ़ंक्शंस नहीं लेता है, मेरे पास पथ पर href करने के अलावा कोई विकल्प नहीं था।

बस एक बालक थोड़ा और अधिक जानकारी मैं बिल्कुल भी डुप्लिकेट कार्यों हवलदार नहीं है, सभी कार्यों को जोड़ने और उनके नाम अद्वितीय हैं और url_for मार्ग प्रत्येक खाका

यहाँ के भीतर ठीक काम करता है के लिए Traceback है:

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

पोस्ट पूरे पश्व-अनुरेखन:

subapp = Blueprint('profile', __name__) @subapp.route('/<username>') def fetch_profile(username): pass 

आप ऊपर की तरह खाका घोषित हैं, तो आप url_for() नीचे की तरह फोन करना चाहिए। – Blender

+1

कृपया कोड भी दिखाएं जहां ऐप में दोनों ब्लूप्रिंट पंजीकृत हैं। –

उत्तर

7

आपने अपना ब्लूप्रिंट userA कैसे घोषित किया?

जब आप ब्लूप्रिंट के साथ url_for() का उपयोग कर, (खाका पहचानकर्ता के रूप में) अंत बिंदु का प्रीफ़िक्स नाम के रूप में आप पहले तर्क के लिए पारित कर दिया, नहीं चर के नाम का खाका करने के लिए सौंपा गया है होना चाहिए खाका की

url_for('profile.fetch_profile', username=arg) 
संबंधित मुद्दे