Python ekvivalent Ruby bloků pro Sinatra stylu URL směrování

hlasů
2

Existuje způsob, jak obnovovat Sinatra URL směrování v Pythonu? A existují nějaké důvody, proč to nemusí být žádoucí?

Od Sinatra:

get '/' do
    'Hello world!'
end

Z baňky (pomocí malíři pro směrování):

@app.route(/)
def hello():
    return Hello World!

Sinatra dosahuje tato stručnost přes Ruby bloků:

def get(path, opts={}, &block)
    conditions = @conditions.dup
    route('GET', path, opts, &block)

    @conditions = conditions
    route('HEAD', path, opts, &block)
end

Soudím, že Python nemá přesný ekvivalent Ruby bloků, ale existují způsoby, jak obnovovat funkčnost. Jak by to mohlo být provedeno?

Položena 23/02/2011 v 11:21
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
3

Jak jste řekl, Python nemá něco takového rubínové bloků. Decorators jsou běžně používané řešení pro směrování. Na druhou stranu by se vytvořit seznam / dict obsahující trasy, ale od té doby se zdá, že chtějí definice tras vedle základního kódu, dekoratér, jak je to, co budete chtít používat.

Odpovězeno 23/02/2011 v 11:27
zdroj uživatelem

hlasů
0

Dalším způsobem, jak by se používat Metaclasses, jako je tomu v webpy je web.autoapplication , zdrojového kódu, který .

Odpovězeno 23/02/2011 v 14:13
zdroj uživatelem

hlasů
0

Tak, aby vaši druhou otázku: ‚A existují nějaké důvody, proč tomu tak nemusí být žádoucí?‘.

  • S názvem funkce umožňuje dělat věci url_for(some_function), které usnadňuje restrukturalizaci webu.
  • pojmenované funkce umožňují testování, docstrings, atd.
Odpovězeno 18/05/2011 v 17:30
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more