आपको लोकप्रिय सर्वर जैसे apache
या nginx
उत्पादन में दिए गए सेंडफाइल एपिस का उपयोग करना चाहिए । कई वर्षों से मैं फ़ाइलों की सुरक्षा के लिए इन सर्वरों के सेंडल एप का उपयोग कर रहा था। फिर इस उद्देश्य के लिए एक साधारण मिडलवेयर आधारित django ऐप बनाया, जो विकास और उत्पादन दोनों उद्देश्य के लिए उपयुक्त है । आप यहाँ स्रोत कोड तक पहुँच सकते हैं ।
अद्यतन: यदि उपलब्ध हो तो नए संस्करण python
प्रदाता में django का उपयोग किया जाता FileResponse
है और यह भी lIIIttp, Caddy से hiawatha तक कई सर्वर कार्यान्वयन के लिए समर्थन जोड़ता है
प्रयोग
pip install django-fileprovider
- सेटिंग में
fileprovider
एप्लिकेशन जोड़ें INSTALLED_APPS
,
- जोड़ने
fileprovider.middleware.FileProviderMiddleware
के लिए MIDDLEWARE_CLASSES
सेटिंग्स
- डिफ़ॉल्ट रूप
FILEPROVIDER_NAME
से nginx
या विकास के उद्देश्य के लिए apache
, सेटिंग में या उत्पादन के लिए सेट करें python
।
अपने क्लासबेडेड या फ़ंक्शन दृश्यों X-File
में फ़ाइल के लिए निरपेक्ष पथ पर प्रतिक्रिया हेडर मान सेट करें । उदाहरण के लिए,
def hello(request):
// code to check or protect the file from unauthorized access
response = HttpResponse()
response['X-File'] = '/absolute/path/to/file'
return response
django-fileprovider
इस तरह से लागू किया जाता है कि आपके कोड को केवल न्यूनतम संशोधन की आवश्यकता होगी।
Nginx कॉन्फ़िगरेशन
फ़ाइल को सीधे एक्सेस से बचाने के लिए आप कॉन्फ़िगरेशन को सेट कर सकते हैं
location /files/ {
internal;
root /home/sideffect0/secret_files/;
}
यहाँ nginx
एक स्थान सेट करता है url /files/
केवल आंतरिक रूप से एक्सेस करता है, यदि आप उपरोक्त कॉन्फ़िगरेशन का उपयोग कर रहे हैं, तो आप X-File को सेट कर सकते हैं,
response['X-File'] = '/files/filename.extension'
Nginx कॉन्फ़िगरेशन के साथ ऐसा करने से, फ़ाइल सुरक्षित हो जाएगी और साथ ही आप फ़ाइल को django से नियंत्रित कर सकते हैं views