ऐसा लगता है कि आपके कोड में उल्लिखित विधि को काम करना चाहिए। यह वास्तव में किसी अन्य संरक्षित संसाधन से अलग नहीं है: आपके विचार डिस्क से फ़ाइलों, डेटाबेस से रिकॉर्ड, टेम्पलेट्स या कुछ भी प्रदान कर सकते हैं। जैसे ही login_required सजावट अन्य विचारों तक अनधिकृत पहुंच को रोकती है, यह आपके दृश्य सेवा संरक्षित मीडिया की ऐसी पहुंच को रोक देगा।
क्या मुझे यहां आपके प्रश्न से कुछ याद आ रही है? अगर यह मामला है तो कृपया स्पष्ट करें।
संपादित करें: अपनी टिप्पणी में django दस्तावेज़ लिंक के संबंध में: यह किसी विशेष निर्देशिका से किसी भी अनुरोध फ़ाइल की सेवा करने का तरीका है। तो, उस उदाहरण में यूआरएल /site_media/foo.jpg
, /site_media/somefolder/bar.jpg
स्वचालित रूप से और somefolder/bar.jpg
document_root
के अंतर्गत फ़ाइलों को देखेगा। असल में, document_root
के तहत हर चीज सार्वजनिक रूप से उपलब्ध होगी। यह स्पष्ट रूप से असुरक्षित है। तो आप अपनी विधि से बचें।
इसे अक्षम माना जाता है क्योंकि डीजेंगो आपको बहुत अनावश्यक ओवरहेड जोड़ रहा है, जब आपको केवल यूआरएल अनुरोध लेने के लिए अपाचे की तरह कुछ और हार्ड ड्राइव पर फ़ाइल में मैप करना है। (आपको django सत्र, अनुरोध प्रसंस्करण इत्यादि की आवश्यकता नहीं है)
आपके मामले में, यह ऐसी बड़ी चिंता नहीं हो सकती है। सबसे पहले, आपने दृश्य सुरक्षित कर लिया है। दूसरा, यह आपके उपयोग पैटर्न पर निर्भर करता है। इन फ़ाइलों के लिए आप कितने अनुरोधों की उम्मीद करते हैं? आप केवल प्रमाणीकरण के लिए django का उपयोग कर रहे हैं - क्या यह अन्य ओवरहेड को औचित्य देता है? यदि नहीं, तो आप अपाचे के साथ उन फ़ाइलों की सेवा करने और प्रमाणीकरण प्रदाता का उपयोग करने में देख सकते हैं। इस बारे में अधिक के लिए, mod_wsgi
दस्तावेज़ देखें: और Django के लिए खोज
समान mod_python
के तहत उपलब्ध तंत्र रहे हैं मुझे विश्वास है। संपादित करें 2: (अपडेट सिर्फ अन्य जवाब देखा कृपया mod_python
विधि के लिए आंद्रे के जवाब देखें।।)
:
send_file
विधि एक फ़ाइलवापर का उपयोग करता है जो बड़ी स्थिर फ़ाइलों को वापस भेजने के लिए अच्छा है (यह पूरी फ़ाइल को स्मृति में नहीं पढ़ता है)।आपके द्वारा भेजे जा रहे फ़ाइल के प्रकार (पीडीएफ, जेपीजी, आदि) के आधार पर आपको content_type
को बदलना होगा।
अरे Ars, मुझे यह स्पष्ट करना चाहिए था कि मैं django दस्तावेज़ों से निम्नलिखित चिंता में मध्यस्थता करने की कोशिश कर रहा हूं: http://docs.djangoproject.com/en/dev/howto/static-files/#the-big -फैट-अस्वीकरण यदि psuedo-code की यह पंक्ति मान्य है, तो आप इसे कैसे पूरा करते हैं? # अगर लॉग इन है, तो अपाचे धन्यवाद से "फ़ाइल नाम" की सेवा करें! -टॉम – TomFuertes
समझ गया; बस जवाब अद्यतन किया। उम्मीद है की यह मदद करेगा। – ars