2011-01-20 2 views
7

मैं वेबपी फ्रेमवर्क का उपयोग कर रहा हूं। मैं अनुरोधों में से एक पर स्थिर फ़ाइल की सेवा करना चाहता हूं। क्या वेबपी फ्रेमवर्क में कोई विशेष विधि है या मुझे बस उस फाइल को पढ़ना और वापस करना है?वेबपी में फ़ाइल कैसे सेवा करें?

उत्तर

10

आप डेव सर्वर (अपाचे के बिना) चला रहे हैं:

एक निर्देशिका (यह भी एक फ़ोल्डर के रूप में जाना जाता है) बनाएं स्क्रिप्ट web.py सर्वर चलाता है कि के स्थान में स्थिर कहा जाता है। फिर स्थैतिक फ़ोल्डर में उन स्थिर फ़ाइलों को रखें जिन्हें आप सेवा देना चाहते हैं।

उदाहरण के लिए, यूआरएल http://localhost/static/logo.png क्लाइंट को छवि ./static/logo.png भेज देगा।

संदर्भ: http://webpy.org/cookbook/staticfiles


अद्यतन। क्या तुम सच में / पर स्थिर फ़ाइल की सेवा करने की जरूरत है तो आप बस रीडायरेक्ट का उपयोग कर सकते हैं:

#!/usr/bin/env python 

import web 

urls = (
    '/', 'index' 
) 

class index: 
    def GET(self): 
     # redirect to the static file ... 
     raise web.seeother('/static/index.html') 

app = web.application(urls, globals()) 

if __name__ == "__main__": app.run() 
+0

कि फाइलें केवल/स्थिर पथ में सेवा करती हैं, मुझे पथ/ – codez

+0

@codez के अनुरोध पर index.html की सेवा करने की आवश्यकता है: मेरा उत्तर अपडेट किया गया। – miku

+0

यह केवल तभी काम करता है यदि आप सीधे उस फ़ोल्डर से web.py ऐप चलाते हैं जहां यह बैठता है। यदि आप /path/to/my/web/app.py को भाग्य से बाहर करना चाहते हैं तो आप भाग्य से बाहर हैं। – Octopus

6

मैं घंटे पिछले कुछ के लिए इस के साथ संघर्ष किया ... नीरस

मिले दो समाधान है जो दोनों मेरे लिए काम कर रहे हैं ... 1 - .htaccess में ModRewrite लाइन से पहले इस पंक्ति जोड़ें:

RewriteCond %{REQUEST_URI} !^/static/.* 

यह सुनिश्चित/स्थिर/निर्देशिका करने के लिए अनुरोध कर रहे हैं कि कर देगा आपकी code.py स्क्रिप्ट पर जाने के लिए पुनः लिखा नहीं गया है। -

2 code.py में एक स्थिर हैंडलर और कई निर्देशिकाओं से प्रत्येक के लिए एक यूआरएल प्रविष्टि जोड़ने:

urls = (
    '/' , 'index' , 
    '/add', 'add' , 
    '/(js|css|images)/(.*)', 'static', 
    '/one' , 'one' 
    ) 

class static: 
    def GET(self, media, file): 
     try: 
      f = open(media+'/'+file, 'r') 
      return f.read() 
     except: 
      return '' # you can send an 404 error here if you want 

नोट - मैं web.py गूगल समूह से चुरा लिया लेकिन नहीं मिल सकता है डांग पोस्ट अब और भी!

इनमें से मेरे लिए काम किया, दोनों web.py के लिए टेम्पलेट्स के भीतर और एक वेब पेज है कि मैं "स्थिर" में डाल के लिए एक सीधा कॉल के लिए

+0

क्या आपने http://webpy.org/cookbook/staticfiles पर इन विधियों के लिए कुछ लाभ देखा था? – dimo414

+0

मुझे यह काम करने के लिए मिला - मुझे काम करने के लिए अन्य विधियां नहीं मिल सका, इसलिए मुझे लगता है कि यह एक फायदा है ;-) मैं एक साझा होस्टिंग खाते पर काम कर रहा था ताकि शायद मेरा कुछ संघर्ष हो। –

+1

@tom - धन्यवाद! आपने मुझे इस पोस्ट के साथ दो घंटे बचाया। – incognick

1

मैं वेब के साथ स्थिर फ़ाइलों की सेवा की अनुशंसा नहीं करते .py। इसके लिए आप अपाचे या nginx को बेहतर कॉन्फ़िगर करेंगे।

+0

क्यों नहीं? आपके कारणों को समझना फायदेमंद होगा। – Octopus

+0

क्योंकि यह धीमा हो जाएगा –