मुझे विशिष्ट तर्क के अनुसार सीएसएस फ़ाइलों और जेएस फ़ाइलों को वापस करने की आवश्यकता है। जाहिर है, स्थिर सेवा जो मुझे चाहिए वह नहीं करती है। मेरे पास एक दृश्य है, जिसकी रेंडर विधि उचित फ़ाइल खोजने के लिए तर्क का उपयोग करती है, लेकिन फिर मुझे इसे वापस करना होगा। तकनीकी रूप से, मैं सिर्फ फाइल को पढ़ सकता हूं और उचित माइम प्रकार के साथ इसे HttpResponse ऑब्जेक्ट में रख सकता हूं, लेकिन मैं सोच रहा था कि क्या बेहतर रणनीति थी। (जैसे fpassthru() php में)django में एक दृश्य के माध्यम से गुजरने वाली स्थिर फाइलें कैसे वापस करें?
उत्तर
यह स्थिर सामग्री (उल्लेख करने के लिए, परिमाण धीमी गति के कई आदेश) की सेवा करने के लिए django का उपयोग करने के लिए अपमानजनक होना चाहिए।
मैं दृश्य को संदर्भ प्रोसेसर में परिवर्तित करना चाहता हूं और टेम्पलेट्स में वेरिएबल्स का उपयोग करके यह पता लगाने के लिए कि कौन से ब्लॉक शामिल हैं।
यही वही है जो मैं दूर जाना चाहता हूं। मैं पहले से ही सामान समेत हूं, जिसके परिणामस्वरूप सीएसएस और जेएस फ़ाइलों को एचटीएमएल फाइल में हार्डकोड किया गया है, कैशिंग के किसी भी रूप को रोकना (क्योंकि पूरे पृष्ठ को बदलने के लिए समझा जाता है)। मैं जेएस और सीएसएस को शिप करने में सक्षम होना चाहता हूं, लेकिन चूंकि यह शिपमेंट मेरे आवेदन के प्लगइन पर निर्भर है, इसलिए मुझे फ़ाइल भेजने से पहले कुछ तर्क करने की ज़रूरत है। –
क्या आप Django कैशिंग के किसी भी रूप को रोकने का मतलब है? चूंकि सीएसएस और जेएस में टेम्पलेट में हार्ड-कोडित होने से उपयोगकर्ता के ब्राउज़र को कैशिंग करने से नहीं रोका जाएगा। मैं स्पष्ट नहीं हूं कि वास्तविक समस्या क्या है। ऐसा लगता है कि गतिशील होने के कारण आपको पूरे पृष्ठ को कैशिंग करने में परेशानी हो रही है। शेष पृष्ठ कैश क्यों नहीं करें और ब्राउज़र/अपने वेब सर्वर को बाकी करने दें (वैसे भी इसका काम क्या है)? – Tom
यह वास्तविक उत्तर के बाद एक महान टिप्पणी या चेतावनी देगा। –
कन्स्ट्रक्टर के लिए एक पुनरावर्तक (जैसे open()
का परिणाम) पास करें।
सही स्थिर फ़ाइल के स्थान पर HttpResponseRedirect
वापस क्यों न करें?
क्योंकि फ़ाइल सीधे पहुंच योग्य नहीं है। –
आप किस वेबसर्वर सॉफ्टवेयर का उपयोग कर रहे हैं?
कम से कम अपाचे और एनजिनएक्स के लिए, एक मॉड्यूल है जो आपको X-SendFile
HTTP शीर्षलेख का उपयोग करने में सक्षम बनाता है। NginX वेबसाइट का कहना है कि लाइट भी ऐसा कर सकता है।
अपने आवरण ध्यान में रखते हुए:
...
abspath = '/most_secret_directory_on_the_whole_filesystem/protected_filename.css'
response = HttpResponse()
response['X-Sendfile'] = abspath
response['Content-Type'] = 'mimetype/submimetype'
# or let your webserver auto-inject such a header field
# after auto-recognition of mimetype based on filename extension
response['Content-Length'] = <filesize>
# can probably be left out if you don't want to hassle with getting it off disk.
# oh, and:
# if the file is stored via a models.FileField, you just need myfilefield.size
response['Content-Disposition'] = 'attachment; filename=%s.css' \
% 'whatever_public_filename_you_need_it_to_be'
return response
तो फिर तुम http://mysite.com/url_path/to/serve_hidden_css_file/
के माध्यम से दृश्य जुड़ सकते हैं।
आप किसी भी समय अनुरोध किए जा रहे फ़ाइल पर कुछ करने की आवश्यकता है, जिसे आप उपयोगकर्ताओं के लिए सीधे पहुंच योग्य नहीं होना चाहिए, जैसे कि इसे एक्सेस कर सकते हैं, या आंकड़ों के लिए अनुरोधों की गणना करना, या जो भी हो, आप इसका उपयोग कर सकते हैं।
अपाचे के लिए: http://tn123.ath.cx/mod_xsendfile/
nginx के लिए: http://wiki.nginx.org/NginxXSendfile
यह मैं क्या उपयोग किया जाता है:
test_file = open('/home/poop/serve/test.pdf', 'rb')
response = HttpResponse(content=test_file)
response['Content-Type'] = 'application/pdf'
response['Content-Disposition'] = 'attachment; filename="%s.pdf"' \
% 'whatever'
return response
मुझे खुले() फ़ंक्शन पर 'आरबी' मोड की आवश्यकता है, या इस कोड ने मेरे पीडीएफ को गड़बड़ कर दिया है। यह django/विचार/static.py में उपयोग किए गए कोड से मेल खाता है। –
ऐसा लगता है कि यह पूरी फ़ाइल को स्मृति में लोड करने का कारण बनता है। यही है ना –
@EmanuelePaolini: आप इसके बजाय 'HttpResponse' में एक इटरेटर पास कर सकते हैं, मैंने इसे प्रतिबिंबित करने के लिए उत्तर संशोधित किया है। – Flimm
आप Django आपके विचार
from django.contrib.staticfiles.views import serve
...
def view_function(request):
return serve(request, 'absolute_path_to_file_name')
[डॉक्स] (https://docs.djangoproject.com/en/1.4/ref/contrib/staticfiles/#other-helpers) कहते हैं: "चेतावनी। यह दृश्य केवल तभी काम करेगा जब DEBUG सत्य है। ऐसा इसलिए है क्योंकि यह दृश्य पूरी तरह से अक्षम और संभवतः असुरक्षित है। यह केवल स्थानीय विकास के लिए है, और इसका उत्पादन कभी भी नहीं किया जाना चाहिए। " –
सेवित अंदर StaticFiles क्यों उपयोग नहीं करते सीधे एक दृश्य से फ़ाइलें बहुत धीमी है। यदि आप सामान्य फ़ाइल की सेवा की तलाश में हैं तो यह प्रश्न देखें: Having Django serve downloadable files
एक दृश्य के माध्यम से फ़ाइलों को आसानी से सेवा करने के लिए (डीबग उद्देश्यों के लिए, उदाहरण के लिए) पढ़ना जारी रखें। कौन सा प्रदर्शन कर रहा है नहीं है कि तुम क्या जरूरत है, वेब सर्वर स्थिर फ़ाइल की सेवा, या `django.views.static.serve` http://127.0.0.1:8080/app/test-files/myxml/
- 1. Django स्थिर फाइलें
- 2. django: एक दृश्य से छवि डेटा वापस
- 3. एक 'पुल' मशीन के माध्यम से गुजरने वाली एक एसएसएच सुरंग बनाना
- 4. Django में एक प्रतिक्रिया के रूप में एक स्थिर HTML फ़ाइल कैसे वापस करें?
- 5. Django: केवल बदली गई स्थिर फाइलें एकत्र करें
- 6. हेरोकू पर Django - स्थिर फाइलें नहीं मिलीं
- 7. एक डेटासेट को एक दृश्य में वापस कैसे करें
- 8. Django: स्थिर फाइलों में मीडिया संदर्भित सीएसएस (django dev/1.3/स्थिर फाइलें)
- 9. एक दृश्य में दृश्य मॉडल गुण के माध्यम से लूपिंग
- 10. Django - एक दृश्य से टैग शामिल करना
- 11. WPF StackPanel स्थिर आइटम के माध्यम से कैसे लूप करें?
- 12. django - एक सूची को एक क्वेरीसेट में वापस कनवर्ट करें
- 13. अपवाद को फेंकने वाली फाइलें
- 14. एक अपवाद फेंकने वाली विधि से आउट/रेफ पैरामीटर के माध्यम से मूल्य कैसे प्राप्त करें?
- 15. एक पेड़ दृश्य में नोड्स के माध्यम से पुनरावर्ती Iterate?
- 16. Django में उपयोगकर्ताओं का एक विस्तार दृश्य कैसे करें?
- 17. Django में HttpResponseRedirect से एक संदेश कैसे पास करें?
- 18. django 1.3 में एक विस्तार दृश्य कैसे करें?
- 19. Django व्यवस्थापक: कई करने वाली कई लिस्टबॉक्स पैरामीटर के माध्यम से एक साथ दिखाई नहीं देता
- 20. eclipse में pydev के माध्यम से django एकीकृत करें?
- 21. एक django दृश्य
- 22. Django "दृश्य एक HttpResponse वस्तु वापस नहीं किया था।"
- 23. Django "दृश्य एक HttpResponse ऑब्जेक्ट वापस नहीं किया था।"
- 24. एसपीपी सर्वर से 'फाइल' से शुरू होने वाली सभी फाइलें
- 25. Django: प्रत्येक दृश्य (django)
- 26. कॉलर को एक-दूसरे से गुजरने से कैसे रोकें?
- 27. वर्तमान दृश्य के साथ एक और दृश्य में जाने वाली एकता
- 28. क्या एक स्थिर विधि के माध्यम से एक आवृत्ति चर का उपयोग करना संभव है?
- 29. HTTPS के माध्यम से Django स्थिर फ़ाइलों को कैसे सेवा दें?
- 30. (जावा) ऐप इंजन में स्थिर फाइलें
:
यह आपको से फ़ाइल डाउनलोड करने की अनुमति देता है? –
दो में से कोई नहीं :) –
असल में, व्याकरण प्रश्न। क्या यह "न तो" या "दोनों" है? –