2009-06-03 34 views
5

css sunum dosyalarını değil, çok basit bir http sunucusu, bu do_get yöntem şöyle açıklanmıştır:Özel basit Python HTTP sunucusu Python ile yazılmış bulmuştu

def do_GET(self): 
     try: 
      self.send_response(200) 
      self.send_header('Content-type', 'text/html') 
      self.end_headers(); 
      filepath = self.path 
      print filepath, USTAW['rootwww'] 

      f = file("./www" + filepath) 
      s = f.readline(); 
      while s != "": 
       self.wfile.write(s); 
       s = f.readline(); 
      return 

     except IOError: 
      self.send_error(404,'File Not Found: %s ' % filepath) 

Aslında yanı sıra, Tamam çalışan - bu olduğunu herhangi bir css dosyasına sunulmuyor (css olmadan oluşturulur). Bu tuhaflık için herkesin önerisi/çözümü var mı?

Saygılarımızla, praavDa

+0

Hızlı öneri: Google cherrypy. – Triptych

+0

** eski uyarı uyarısı ** .css dosyalarının html dosyanızın bulunduğu dizinde saklanmasını deneyin. – noobninja

cevap

6

tüm dosyalar için html mimetype dönen gibi görünüyor: Ayrıca

self.send_header('Content-type', 'text/html') 

, oldukça kötü görünüyor. Bu iğrenç sunucuyla neden ilgileniyorsunuz? HTTP sunucusunun iyi python uygulamaları ve çalışmak için iyi bir kod için cherrypy'ye bakın veya yapıştırın.


DÜZENLEME: sizin için düzeltilmeye çalışılıyor:

import os 
import mimetypes 

#... 

    def do_GET(self): 
     try: 

      filepath = self.path 
      print filepath, USTAW['rootwww'] 

      f = open(os.path.join('.', 'www', filepath)) 

     except IOError: 
      self.send_error(404,'File Not Found: %s ' % filepath) 

     else: 
      self.send_response(200) 
      mimetype, _ = mimetypes.guess_type(filepath) 
      self.send_header('Content-type', mimetype) 
      self.end_headers() 
      for s in f: 
       self.wfile.write(s) 
+3

numaralı arama tablosuna sahiptir. Bu sucky'i kullanıyorum, çünkü projemin konusu - python'da http sunucusu yazmam gerekiyor. Cevap için teşekkürler. – praavDa

9

Açıkça sen Content-type: text/css olarak CSS dosyalarını sunmak gerekiyor Content-type: text/html gibi tüm dosyaları hizmet ediyoruz. Ayrıntılar için bkz. this page on the CSS-Discuss Wiki. Web sunucuları genellikle dosya uzantısından İçerik Türü'ne eşlemek için bir arama tablosuna sahiptir.

+3

Python modülünde mimetipler, –

2

Eğer gerekirse özelleştirebilirsiniz daha güvenli, saner uygulanması için standart kütüphanede SimpleHTTPServer.py bakın.

+0

Bu bağlantı için teşekkürler - şimdi kendi başıma nasıl yazabileceğimi biraz daha biliyorum. – praavDa

İlgili konular