नियम अद्वितीय हैं। यदि आप एक ही फ़ंक्शन पर पूर्ण यूआरएल को परिभाषित करते हैं तो यह डिफ़ॉल्ट रूप से संघर्ष करेगा क्योंकि आप ऐसा कुछ कर रहे हैं जो हम आपको हमारे परिप्रेक्ष्य से गलत होने के बाद से करने से रोकते हैं।
एक कारण है कि आप एक ही अंतराल पर एक से अधिक यूआरएल रखना चाहते हैं और यह अतीत में मौजूद नियम के साथ पिछड़ा संगतता है। इस मामले में
@app.route('/')
@app.route('/index.html', alias=True)
def index():
return ...
उपयोगकर्ता /index.html
बोतल स्वचालित रूप से एक स्थायी रूप से बस /
को अनुप्रेषित जारी करेगा अनुरोध करता है, तो: WZ0.8 और बोतल 0.8 जब से तुम स्पष्ट रूप से एक मार्ग के लिए एक उपनाम निर्दिष्ट कर सकते हैं।
कि एक समारोह मतलब यह नहीं है, हालांकि एक से अधिक यूआरएल के लिए बाध्य नहीं किया जा सकता, लेकिन इस मामले में आप अंत बिंदु को बदलने की जरूरत होगी:
@app.route('/')
def index():
...
app.add_url_rule('/index.html', view_func=index, endpoint='alt_index')
या वैकल्पिक रूप से:
@app.route('/')
@app.route('/index.html', endpoint='alt_index')
def index():
...
इस मामले में आप एक अलग नाम के तहत दूसरी बार एक दृश्य परिभाषित कर सकते हैं। हालांकि यह ऐसा कुछ है जिसे आप आम तौर पर टालना चाहते हैं क्योंकि दृश्य कार्य को अनुरोध करने के लिए request.endpoint को देखना होगा। इसके बजाय बेहतर कर कुछ इस तरह:
@app.route('/')
def index():
return _index(alt=False)
@app.route('/index.html')
def alt_index():
return _index(alt=True)
def _index(alt):
...
इन मामलों यूआरएल पीढ़ी के दोनों में url_for('index')
या url_for('alt_index')
है।
तुम भी मार्ग प्रणाली के स्तर पर कर सकते हैं:
@app.route('/', defaults={'alt': False})
@app.route('/index.html', defaults={'alt': True})
def index(alt):
...
इस मामले यूआरएल पीढ़ी में url_for('index', alt=True)
या url_for('index', alt=False)
है।
क्या एक संपूर्ण और सुंदर जवाब है। मुझे सत्यापित करने का मौका दें और मैं इसे स्वीकार कर दूंगा। आपको इसे पोको लोगों को सबमिट करना चाहिए ताकि इसे आधिकारिक रूप से दस्तावेज किया जा सके। – jiggy
ठीक है, तब तक इसमें कुछ परेशानी थी जब तक कि मैं फ्लास्क 0.8 में अपग्रेड नहीं हुआ (यह 0.7.2 के साथ विफल रहा)। ऐसा लगता है कि यह पहली टिप्पणी नहीं है, न कि मेरे लिए आखिरी। किसी भी तरह से, एंडपॉइंट परम कुंजी है। – jiggy