2016-04-06 24 views
1

Bir projeyi miras aldım ve mümkün olduğunca temiz yapmaya çalışıyorum. Şimdi olduğu gibi, her görünüm farklı HTTP istek yöntemlerini (GET, POST, DELETE, vb.) Işleyen/else bloklarına sahiptir. Sadece her bir rotayı değil, her rota + istek yöntemi kombinasyonunu ele alabilen bir görüntüleme yöntemine sahip olmak isterim.Piramidte, istek yöntemini temel alarak aynı rotaya/URL'ye birden çok görünüm noktası gösterebilir miyim?

Bu

@view_config(route_name='foo', request_method='GET', renderer='json') 
def foo(request): 
    return Response(json.dumps({'route' : 'foo', 'method' : 'GET'})) 

@view_config(route_name='foo', request_method='POST', renderer='json') 
def foo(request): 
    return Response(json.dumpds({'route' : 'foo', 'method' : 'POST'})) 

çalışıyorum ama işe yaramıyor. Biri yardım edebilir mi?

+1

için GET ve post_foo için get_foo işlev adını değiştirmek zorunda ama başkalarına yardım etmek için bitireceğimi düşündüm. Görünüm yöntemlerini benzersiz olduklarından yeniden adlandırmak zorunda kaldım, bu yüzden ilk foo() 'foo_get() oldu ve ikincisi' foo_post() oldu. – c0lon

cevap

0

@view_config de xhr=True eklemek deneyin ve Paul Yin yazıyı göre sınıf görünümü

from pyramid.view import view_config, view_defaults 

@view_defaults(route_name='foo') 
class TutorialViews(object): 
    def __init__(self, request): 
     self.request = request 

    @view_config(request_method='GET', xhr=True, renderer='json') 
    def foo_get(self): 
     return Response(json.dumpds({'route' : 'foo', 'method' : 'GET'})) 

    @view_config(request_method='POST', xhr=True, renderer='json') 
    def foo_post(self): 
     return Response(json.dumpds({'route' : 'foo', 'method' : 'POST'})) 
0

kullanabilirsiniz. , bu @view_defaults(route_name='foo') kullanmak için doğrudur, ancak view_config dosyasında xhr=True kullanmanız gerekmez. Ajax isteklerini işlemek için xhr kullanın. ayrıca json oluşturucusunu

1

json.dump usding gerek kullanırsanız ben soruyu yazarak gibi ben bunu anladım POST

@view_config(route_name='foo', request_method='GET', renderer='json') 
    def get_foo(request): 
     return Response(json.dumps({'route' : 'foo', 'method' : 'GET'})) 

    @view_config(route_name='foo', request_method='POST', renderer='json') 
    def post_foo(request): 
     return Response(json.dumpds({'route' : 'foo', 'method' : 'POST'}))