में ट्रायलिंग स्लैश उदाहरण के लिए निम्नलिखित दो मार्ग लें।फ्लास्क मार्ग
app = Flask(__name__)
@app.route("/somewhere")
def no_trailing_slash():
#case one
@app.route("/someplace/")
def with_trailing_slash():
#case two
the docs के अनुसार निम्नलिखित समझा जाता है:
मामले से एक में, मार्ग
"/somewhere/"
के लिए एक अनुरोध 404 प्रतिक्रिया वापस आ जाएगी।"/somewhere"
मान्य है।दो मामले में,
"/someplace/"
वैध है और"/someplace"
"/someplace/"
व्यवहार मैं देखना चाहेंगे 'उलटा' मामले दो व्यवहार के है पर रीडायरेक्ट करेगा। जैसे "/someplace/"
आसपास के अन्य तरीकों की बजाय "/someplace"
पर रीडायरेक्ट करेगा। क्या इस व्यवहार को लेने के लिए मार्ग निर्धारित करने का कोई तरीका है?
मेरी समझ से, strict_slashes=False
मामले में प्रभावी रूप से दो मामले का एक ही व्यवहार पाने के लिए मार्ग पर सेट किया जा सकता है, लेकिन मैं क्या करना चाहते हैं हमेशा बिना यूआरएल पर रीडायरेक्ट करने रीडायरेक्ट व्यवहार मिलता है पिछला स्लैश
एक समाधान जिसे मैंने उपयोग करने के बारे में सोचा है, 404 के लिए एक त्रुटि हैंडलर का उपयोग करेगा, ऐसा कुछ। (अगर यह भी काम करेगा सुनिश्चित नहीं हैं)
@app.errorhandler(404)
def not_found(e):
if request.path.endswith("/") and request.path[:-1] in all_endpoints:
return redirect(request.path[:-1]), 302
return render_template("404.html"), 404
लेकिन वहाँ एक बेहतर समाधान नहीं है, तो किसी प्रकार की एक बूंद-इन एप्लिकेशन विन्यास, strict_slashes=False
के समान है कि मैं विश्व स्तर पर लागू कर सकते हैं की तरह मैं सोच रहा हूँ। शायद एक ब्लूप्रिंट या यूआरएल नियम?
दोनों अलग से लागू करने और राशि '/ somplace/प्रत्येक मार्ग के लिए लागू किया जा करने के लिए आप विशेष तर्क की आवश्यकता नहीं करने की अनुमति देगा' '/ someplace' को अनुप्रेषित? – Busturdust
मैंने जो देखा है वह है जब आपके पास अपने फ्लास्क कॉन्फ़िगरेशन में 'DEBUG = True' है, पीछे की जगहों को पुनर्निर्देशित नहीं किया जाता है, लेकिन जब 'DEBUG = गलत' होता है तो इसे पुनर्निर्देशित किया जाता है। –
@ बुस्टर्डस्ट जो शायद काम कर सकता है, लेकिन प्रबंधन के लिए दर्द का एक प्रकार होगा। कुछ अन्य विचारों में मैंने एक [त्रुटि हैंडलर] (http://flask.pocoo.org/docs/0.11/patterns/errorpages/#error-handlers) का उपयोग करना शामिल किया है जो स्लैशलेस एंडपॉइंट मौजूद होने पर रीडायरेक्ट लौटाता है। किसी प्रकार के ब्लूप्रिंट का उपयोग करना भी संभव हो सकता है। लेकिन मैं पहले से ही किसी और के लिए 404 त्रुटि हैंडलर का उपयोग करता हूं (इसे बेक किया जा सकता है, लेकिन मैं नहीं चाहता) और मुझे यकीन नहीं है कि यह ब्लूप्रिंट के साथ हासिल किया जा सकता है या नहीं। आदर्श समाधान वैश्विक यूआरएल नियम की तरह एक ड्रॉप-इन होगा। – sytech