如何使用python创建简单的网站?
我的意思很简单,f.ex,你看到文字“Hello World”,并且有按钮“submit”,其中(onClick)将显示ajax框“提交成功”。
我想开始用Python开发一些东西,我不知道从哪里开始。
答案 0 :(得分:11)
我希望能够对这个问题给出更详细的答案,因为这是一个敏感话题。 Python Web开发分为许多框架,每个框架都有起伏,每个开发人员使用不同的框架。这非常不幸。你应该知道的:
总之,使用最接近你心脏的东西。
答案 1 :(得分:4)
您可以使用Python编写一个Web站点,其中Web服务器是用Python实现的,或者是从其他Web服务器调用Python的。如果您尚未设置Web服务器,则第一个选项更容易。 Python库包含一个功能齐全的Web服务器,您只需添加几个方法来响应请求。
有关使用此简单技术的网站的完整示例,请参阅Making a simple web server in Python
这项技术可能会或可能不适合您开发商业,生产网站,但它是从P(ython)到W(ebsite)的最简单方法。
答案 2 :(得分:3)
正如Felix建议的那样,绝对使用WSGI(mod_wsgi)作为您的网关接口。这是开展业务的现代方式,而另一个主要的竞争者mod_python不再被维护。
Django是一个很好的选择,如果你想要一个成熟的生产质量框架,但它也需要花费大量的开销和相当陡峭的学习曲线。
我的建议是:Tornado!
我发现Tornado可以很容易地快速启动和运行。这里要说明的是Tornado文档中的“Hello,World”:
import tornado.httpserver
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
在我看来,这说明了一切。
编辑:请注意, 以使用Tornado附带的网络服务器非常重要。它plugs very easily into WSGI可以与您已经使用的任何服务器一起运行。
祝你好运!
答案 3 :(得分:3)
为什么不尝试使用Google AppEngine?它们为您提供了一个本地环境(在本地系统上运行)来开发应用程序。他们有很好的,简单的介绍材料,让网站启动和运行 - 你的“你好,世界”的例子将很容易实现。
从那以后,您可以选择其他框架(使用您学到的东西,因为香草AppEngine的东西非常适合简单的python Web框架)或继续使用Google提供的其他框架(比如托管您的应用程序)为你......)
答案 4 :(得分:3)
你可以免费提供这门课程Web Development using Python。 这是一个很好的课程,使用GAE从头开始教学。在课程结束时,您将在python中开发一个由您开发的完整的博客。
P.S.Sadd的一名教练是Reddit的创始人Steve Huffman。答案 5 :(得分:2)
我认为你应该从某种Python Web框架开始。对我来说Web2Py既简单又强大。当然,您可以使用CGI创建页面:不需要框架,但对于更复杂的站点,这是不切实际的。
答案 6 :(得分:-1)
HTML:
TS:
从'@ angular / core'导入{组件};
@Component({
选择器:“ app-root”,
templateUrl:'./app.component.html',
styleUrls:['./app.component.css']
})
导出类AppComponent {
title ='poc';
customerSelect:字符串=“否”;
customers = [“ Vikas”,“ Vinay”,“ bla bla”];
customerDeatils = [
{ name: "Vikas", AccountType: "Savings", Balance: "122435" },
{名称:“ Vinay”,帐户类型:“当前”,余额:“ 2517471”},
{ name: "bla bla", AccountType: "Normal", Balance: "423523" }
];
showCustomerUI:任意;
showTable:任意;
showCustomerTable(){
this.showTable = "Yes";
for (var i = 0; i < this.customerDeatils.length; i++) {
if (this.customerDeatils[i].name == this.customerSelect) {
this.showCustomerUI = this.customerDeatils[i];
break;
}
}
}
}
Module.ts
从'@ angular / platform-browser'导入{BrowserModule};
从'@ angular / core'导入{NgModule};
从'@ angular / forms'导入{FormsModule};
从'./app-routing.module'导入{AppRoutingModule};
从'./app.component'导入{AppComponent};
@NgModule({
声明:[
AppComponent
],
导入:[
BrowserModule,
FormsModule,
AppRoutingModule
],
提供者:[],
引导程序:[AppComponent]
})
导出类AppModule {}