Сайты без рамок
Как запустить сайт с нуля без использования фреймворка?
Я хочу создать веб-сервис, который взаимодействует с базой данных и динамически отображает содержимое в зависимости от активности пользователя.
Я хочу, чтобы внешний вид был HTML5/CSS3.
Я бы предпочел общаться с базой данных через Python или идти.
База данных - Кассандра.
Я чувствую, что все эти усилия я вложил в пробные фреймворки, которые имеют ограниченные возможности и запускают API, где я понятия не имею, что на самом деле делает API.
Я хочу очень простой пример, который я могу понять основы двустороннего общения. Я хочу, чтобы мой /var/www выглядел так:
# ls /var/www
index.html datawriteandread.py
Пример чего-то такого простого, как index.html: с двумя полями, одно из которых принимает текст и отправляет его в базу данных, а второе - ниже первого, в котором перечисляется содержимое этой базы данных.
И второй файл, datawriteandread.py, для связи с базой данных для добавления нового контента и отображения старого в HTML.
Что из моего невежества проявляется в желании чего-то такого простого?
Написание Python для Cassandra достаточно легкое, я теряю связь и отображение в HTML. У меня есть программы программирования, но Webdev совершенно новый для меня.
3 ответа
Это для настройки Apache2:
http://narnia.cs.ttu.edu/drupal/node/43 add
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all AddHandler cgi-script .py # tell Apache to handle every file with .py suffix as a cgi program AddHandler default-handler .html .htm # tell Apache to handle HTML files in regular way </Directory>
в /etc/apache2/sites-available/default
И этот фрагмент кода:
http://wiki.python.org/moin/CgiScripts... (спасибо Майку Кристенсену за эту ссылку)
1 #!C:\Python27\python.exe -u 2 #!/usr/bin/env python 3 4 import cgi 5 import cgitb; cgitb.enable() # for troubleshooting 6 7 print "Content-type: text/html" 8 print 9 10 print """ 11 <html> 12 13 <head><title>Sample CGI Script</title></head> 14 15 <body> 16 17 <h3> Sample CGI Script </h3> 18 """ 19 20 form = cgi.FieldStorage() 21 message = form.getvalue("message", "(no message)") 22 23 print """ 24 25 <p>Previous message: %s</p> 26 27 <p>form 28 29 <form method="post" action="index.cgi"> 30 <p>message: <input type="text" name="message"/></p> 31 </form> 32 33 </body> 34 35 </html> 36 """ % cgi.escape(message)
Объединить, чтобы дать мне именно то, что я хотел без базы данных, но реализация логична.
Вот следующий шаг.
http://www.java2s.com/Tutorial/Python/0440__CGI-Web/Loginform.htm
Ваш index.htm:
<HTML> <HEAD><TITLE>Login Page</TITLE></HEAD> <BODY> <CENTER> <FORM method="POST" action="http://yourserver/cgi-bin/login.py"> <paragraph> Enter your login name: <input type="text" name="login"> <paragraph> Enter your password: <input type=password name="password"> <paragraph> <input type="submit" value="Connect"> </FORM> </CENTER> <HR> </form> </BODY> </HTML>
Ваш login.py CGI:
#!/usr/local/bin/python import cgi def header(title): print "Content-type: text/html\n" print "<HTML>\n<HEAD>\n<TITLE>%s</TITLE>\n</HEAD>\n<BODY>\n" % (title) def footer(): print "</BODY></HTML>" form = cgi.FieldStorage() password = "python" if not form: header("Login Response") elif form.has_key("login") and form["login"].value != "" and form.has_key("password") and form["password"].value == password: header("Connected ...") print "<center><hr><H3>Welcome back," , form["login"].value, ".</H3><hr></center>" print r"""<form><input type="hidden" name="session" value="%s"></form>""" % (form["login"].value) print "<H3><a href=browse.html>Click here to start browsing</a></H3>" else: header("No success!") print "<H3>Please go back and enter a valid login.</H3>" footer()
Я думаю, что самым мертвым, простым способом использования Python был бы сценарий CGI. Ваш веб-сервер просто запустит ваш скрипт на Python и перенаправит вывод в ответ. Нет рамок, нет ничего.
Вы можете Google для " Python CGI" и получить множество примеров, таких как этот. Оттуда вы сможете напрямую взаимодействовать с базой данных, используя драйвер базы данных Python по вашему выбору. Ваш HTML просто POST
данные в ваш скрипт Python напрямую.
Вы можете сделать это с помощью CGI. Простой скрипт Python CGI может быть:
print "Content-type: text/html"
print
print "Hello, world!"
Детали настройки вашего веб-сервера для запуска программы на Python в виде CGI-скрипта будут зависеть от вашего выбора веб-сервера. Однако в документации должен быть раздел CGI, к которому вы можете обратиться.
Питон cgi
Модуль имеет различные функции, которые будут полезны для таких вещей, как извлечение данных формы, отправленных браузером.