2010-09-10 12 views
52

मैं flaskr नमूना ऐप के लॉगिन को संशोधित करता हूं, पहली पंक्ति त्रुटि प्राप्त होती है। लेकिन www.html टेम्पलेट डीआईआर में है।फ्लास्क त्रुटि: werkzeug.routing.buildError

return redirect(url_for('www')) 
#return redirect(url_for('show_entries')) 

प्रदर्शन त्रुटि:

werkzeug.routing.BuildError 

BuildError: ('www', {}, None) 

मदद के लिए धन्यवाद!

उत्तर

117

return redirect(url_for('www')) काम करेगा अगर आप एक समारोह कहीं और इस तरह है:

@app.route('/welcome') 
def www(): 
    return render_template('www.html') 

url_for एक समारोह के लिए लग रहा है, तो आप इसे नाम समारोह आप कॉल करना चाहते हैं की गुजरती हैं। इस तरह यह के बारे में सोचो:

@app.route('/login') 
def sign_in(): 
    for thing in login_routine: 
     do_stuff(thing) 
    return render_template('sign_in.html') 

@app.route('/new-member') 
def welcome_page(): 
    flash('welcome to our new members') 
    flash('no cussing, no biting, nothing stronger than gin before breakfast') 
    return redirect(url_for('sign_in')) # not 'login', not 'sign_in.html' 

तुम भी, return redirect('/some-url') कर सकता है कि अगर याद करने के लिए आसान है। यह भी संभव है कि आप अपनी पहली पंक्ति को देखते हुए, केवल return render_template('www.html') है।

और यह भी, नहीं नीचे shuaiyuancn की टिप्पणी से, अगर आप ब्लूप्रिंट उपयोग कर रहे हैं, url_forurl_for(blueprint_name.func_name) के रूप में लागू किया जाना चाहिए। See documentation here

+0

मैं देख रहा हूँ, वास्तव में आप bvmou veru बहुत धन्यवाद। – chenge

+12

+1 एक बहुत स्पष्ट उदाहरण के लिए ... और "नाश्ते से पहले जीन से मजबूत कुछ भी नहीं" –

+0

प्रबुद्ध! मुझे लगा कि तर्क यूआरएल है .. – swdev

1

मानते हैं कि def www(): पहले से ही परिभाषित किया गया है (जैसा कि अनमाउंट किए गए भयानक उत्तर द्वारा सुझाया गया है), यह त्रुटि भी फेंक दी जा सकती है यदि आप ब्लूप्रिंट का उपयोग कर रहे हैं जो पंजीकृत नहीं है।

app पहली बार तत्काल स्थापित होने पर इन्हें पंजीकृत करना सुनिश्चित करें। मेरे लिए यह इस तरह से किया गया था:

from project.app.views.my_blueprint import my_blueprint 
app = Flask(__name__, template_folder='{}/templates'.format(app_path), static_folder='{}/static'.format(app_path)) 
app.register_blueprint(my_blueprint) 

और भीतर my_blueprint.py:

from flask import render_template, Blueprint 
from flask_cors import CORS 

my_blueprint = Blueprint('my_blueprint', __name__, url_prefix='/my-page') 
CORS(my_blueprint) 


@metric_retriever.route('/') 
def index(): 
    return render_template('index.html', page_title='My Page!')