1

如何在不使用框架的情况下从头开始创建网站?

我想创建一个与数据库通信并根据用户活动动态显示内容的 Web 服务。

我希望外观是 HTML5/CSS3。

我宁愿通过python与数据库通信,或者go。

数据库是 Cassandra。

我觉得我已经将所有这些努力都放在了尝试具有限制选项和运行 API 的框架上,而我不知道 API 真正在做什么。

我想要一个超级简单的例子,我可以理解双向通信的基础知识。我希望我的 /var/www 看起来像这样:

# ls /var/www

index.html 数据写入和读取.py

一个像 index.html 这样简单的例子:有两个框,一个接收文本并将其提交到数据库,另一个框在第一个框下方列出该数据库的内容。

第二个文件 datawriteandread.py 用于与数据库通信以添加新内容并在 HTML 中显示旧内容。

想要这么简单的东西,我的无知表现在哪里?

将 python 写入 Cassandra 很容易,我迷失的是 HTML 中的通信和显示。我有编程能力,但 webdev 对我来说是全新的。

4

3 回答 3

0

这是配置 Apache2:

http://narnia.cs.ttu.edu/drupal/node/43 添加

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 ...(感谢 Mike Christensen 提供此链接)

   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()
于 2012-08-24T23:28:14.840 回答
0

您可以使用 CGI 执行此操作。一个简单的 Python CGI 脚本可能是:

print "Content-type: text/html"
print

print "Hello, world!"

设置 Web 服务器以将 Python 程序作为 CGI 脚本运行的详细信息将取决于您选择的 Web 服务器。但是,您可以参考文档中的 CGI 部分。

Pythoncgi模块具有各种功能,有助于提取浏览器提交的表单数据等操作。

于 2012-08-24T21:29:10.593 回答
0

我认为使用 Python 最脑残、最简单的方法是作为CGI 脚本。您的 Web 服务器将简单地运行您的 Python 脚本并将输出重定向到响应。没有框架,什么都没有。

您可以在 Google 上搜索“ Python CGI ”并获得大量示例,例如这个。从那里,您将能够使用您选择的 Python 数据库驱动程序直接与数据库进行交互。您的 HTML 将直接将POST数据发送到您的 Python 脚本。

于 2012-08-24T21:30:43.597 回答