2009-06-03 12 views
5

znalazłam napisany w Pythonie, bardzo prosty serwer HTTP, to do_get metoda wygląda następująco:Niestandardowe prosty serwer Python HTTP nie obsługujących pliki css

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) 

To działa ok, poza faktem - że jest nie obsługuje żadnych plików css (renderowane bez css). Czy ktoś ma sugestię/rozwiązanie tego dziwactwa?

poważaniem, praavDa

+0

Szybka sugestia: Google cherrypy. – Triptych

+0

** ostrzeżenie starego wątku ** Spróbuj zapisać plik .css w tym samym katalogu, w którym znajduje się plik html. – noobninja

Odpowiedz

6

wydaje się zwrotu MIME HTML dla wszystkich plików:

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

Ponadto, wydaje się być całkiem źle. Dlaczego jesteś zainteresowany tym obskurnym serwerem? Spójrz na cherrypy lub wklej na dobre implementacje Pythona serwera HTTP i dobry kod do nauki.


EDIT: Próbuje naprawić go dla Ciebie:

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

Używam tego sucky, ponieważ jest to temat mojego projektu - muszę napisać serwer http w pythonie. Dzięki za odpowiedzi. – praavDa

9

Ty wyraźnie obsługujących wszystkie pliki jako Content-type: text/html, gdzie trzeba służyć jako Content-type: text/css pliki CSS. Aby uzyskać szczegółowe informacje, patrz this page on the CSS-Discuss Wiki. Serwery WWW zwykle mają tabelę odnośników do mapowania z rozszerzenia plików na Content-Type.

+3

W pythonie moduł mimetypes ma tabelę odnośników –

2

Zobacz SimpleHTTPServer.py w bibliotece standardowej dla bezpieczniejszego saner realizacji, które można dostosować, jeśli trzeba.

+0

Dziękuję za ten link - teraz wiem trochę więcej o tym, jak sam mogę napisać. – praavDa