Phi*_*hil 3 python flask python-2.7 webapp2
我一直在研究python很长一段时间,最近我决定开始学习Web开发方面的事情.我有PHP和PHP框架的经验,以及ruby,其中:
如何使用flask AND webapp2实现此目的?
我完整地阅读了文档和教程,但它让我非常困惑.我只想要一个文件,其中所有路由和它们应该如何处理都被设置,然后每个路由请求由它自己的模型(python文件)处理.
所有示例都会导致单个文件应用程序.
非常感谢你,真的.请以一种简单的方式亲切地教导.
Webapp2实际上提供了开箱即用的功能 - WSGIApplication类实例Router在其router属性中提供了一个实例,可用于集中式URL maping ,如文档中所示.
Flask没有,但实际上这是在Flask模式中最基本的形式:Lazy Loading.使用LazyView它定义可以打造出一个系统,提供中央URL映射类-或者在每个模块预先定义的符号或特定功能的类的实例中的模块.
我实际上最近发布了一个包(HipPocket),它提供了包装器来简化这种模式的入门.它提供了两类用于此目的LateLoader和Mapper.使用HipPocket,您的中央路由配置文件可能看起来像这样(这假设包布局类似于此处讨论的):
app.py
from flask import Flask
app = Flask("yourapp")
# ... snip ...
Run Code Online (Sandbox Code Playgroud)
urls.py
from .app import app
from hip_pocket import Mapper
mapper = Mapper(app)
mapper.add_url_rule("/", "index.index")
mapper.add_url_rule("/test", "index.test_endpoint", methods=["POST"])
mapper.add_url_rule("/say-hello/<name>",
"say_hello.greeter",
methods=["GET", "POST"])
Run Code Online (Sandbox Code Playgroud)
index.py
def index():
return "Hello from yourapp.index.index!"
def test_endpoint():
return "Got a post request at yourapp.index.test_endpoint"
Run Code Online (Sandbox Code Playgroud)
say_hello.py
def say_hello(name=None):
name = name if name is not None else "World"
return "Greetings {name}!".format(name=name)
Run Code Online (Sandbox Code Playgroud)
run_app.py
from yourapp.app import app
from yourapp.urls import mapper
# We need to import the mapper to cause the URLs to be mapped.
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2713 次 |
| 最近记录: |