Найти - Пользователи
Полная версия: простой web-сервер генерирующий странички
Начало » Python для новичков » простой web-сервер генерирующий странички
1 2 3
Eric-S
Здравствуйте!

Я хочу сделать програмку с web-интерфейсом.

Но есть несколько проблем. Надеюсь на вашу помощь.

во-первых я полный новичок в программировании на python.

во-вторых я очень плохо владею английским (а руского мануала пока не нашел). Ковыряюсь с офицальным доком
и несколькими найдеными русскими текстами.

Соответственно, заранее прошу прощения за совсем глупые вопросы. И надеюсь, на более подробные объяснения.

И так. Я уже нашел код сервера. Который как я думаю, должен делать нужное мне.
Но к сожалению он был выложен на форуме не очень аккуратно и все отступы накрылись. (вероятнее всего это главная причина, того что код не работает).

Пожалуйста подправте или дайте похожий, но рабочий код.


import BaseHTTPServer
import cgi
import string

class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def showPage(self,method,get_data,post_data):
self.wfile.write("HTTP/1.1 200 OK\n");
self.wfile.write("Content-Type: text/html\n")
self.wfile.write("\n");

responce = """
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Simple HTTP Server</title>
<meta name="description" content="Simple HTTP Server" />
</head>
<body style="background:white;">
Method $method<br />
Path: $path<br />
get data $get_data<br />
post data $post_data<br />

<form action="" method="post">
<input type="text" name="value1">
<input type="submit" name="value2">
</form>
</body>
</html>
"""
s = string.Template(responce)
responce = s.substitute(dict(
get_data=get_data,
post_data=post_data,
path=self.path,
method=method
))
self.wfile.write(responce);

def do_GET(self):
get_data = cgi.parse_qs(self.path[2:])
self.showPage('GET',get_data,{})


def do_POST(self):
get_data = cgi.parse_qs(self.path[2:])
cl, cl2 = cgi.parse_header(self.headers.get('content-length'))
qs = self.rfile.read(int(cl))
post_data = cgi.parse_qs(qs.decode())
self.showPage('GET',get_data,post_data)


class ChatServer(BaseHTTPServer.HTTPServer):
def __init__(self,address,handler):
BaseHTTPServer.HTTPServer.__init__(self,address,handler)


def main():
try:
server = ChatServer(('localhost', 8080), RequestHandler)
server.serve_forever()
except KeyboardInterrupt:
print('^C received, shutting down server')
server.socket.close();

if __name__ == '__main__':
main()
Вот так я запускаю, и получаю.

C:\Python\project>wserver
File “C:\Python\project\wserver.py”, line 6
def showPage(self,method,get_data,post_data):
^
IndentationError: expected an indented block
bobry
Вообще мне кажется проще использовать какой нить webpy или cherrypy.
Eric-S
Не ругайтесь пожалуйста, такими умными словами.

Надеюсь гугл мне подскажет их значение.
Eric-S
Ага. Я пробежался по сайтам.
Не знаю. Не хочу делать поспешные выводы.
Но мне кажеться, что webpy или cherrypy это не совсем то, что мне нужно.
Как я понял, это фрэймворк для создания сайтов или даже движок портала. Простите, но в таком случае Python мне не нужен, я и на PHP всё чудесно разрулю, тем более опыт и знания имеються.

Я же хочу делать именно приложение. По сути обычное десктопное, но с web-интерфейсом для пользователя.
Оно будет демоном, висеть в фоне, сканируя локальные файлы, самостоятельно общаясь с другими машинками по сетке.
А при необходимости, юзер через браузер чтобы мог посмотреть результаты, изменить параметры и т.п.

Мне на первостях даже многозадачность не нужна. Если будет работать с одним клиентом и то хорошо.
PooH
Eric-S
Я же хочу делать именно приложение. По сути обычное десктопное, но с web-интерфейсом для пользователя.
Оно будет демоном, висеть в фоне, сканируя локальные файлы, самостоятельно общаясь с другими машинками по сетке.
А при необходимости, юзер через браузер чтобы мог посмотреть результаты, изменить параметры и т.п.
Посмотрите circuits http://trac.softcircuit.com.au/circuits/ будет неплохой каркас для вашего приложения
Eric-S
Спасибо. На первый взгляд это подходит.
Попытаюсь разобраться.
А нет ли инфы на русском?
то через переводчик не очень удобно читать.
Eric-S
Я чего-то наверное не понимаю.
скачал “circuits-1.1.1.tar.gz”, и теперь не пойму, что с этим делать.
Точнее я догадался, что его нужно как-то установить.
Соответственно придя к такому выводу запускаю сетап
E:\sources\python\circuits\circuits-1.1.1\circuits-1.1.1>setup
Traceback (most recent call last):
File “E:\sources\python\circuits\circuits-1.1.1\circuits-1.1.1\setup.py”, line
4, in <module>
from setuptools import setup, find_packages
ImportError: No module named setuptools
Что ещё за setuptools?
Скачал дистриб питона, установил его. Ничего не удалял.
igor.kaist
для начала советую пробежаться хотя бы по курсу лекций по питону, типа этого, иначе трудности будут возникать на каждом шагу.
Eric-S
Спасибо. Самое внятное, что я пока нашел, это “вводный курс в python”

А о setuptools я уже понял что это и для чего. Только пока не нашел где его взять.
PooH
Eric-S
Что ещё за setuptools?
Скачал дистриб питона, установил его. Ничего не удалял.
http://pypi.python.org/pypi/setuptools
Их многие пакеты используют
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB