2017-04-25 9 views
1

我希望能夠加載(本地主機:6543 /用戶),如何否定python上的match_param? (金字塔)

enter image description here

它不會加載,因爲它需要第二個參數(例如本地主機:6543 /用戶/ X)。

enter image description here

我意識到了這個問題,那是因爲我設置我的路線上。

config.add_route('users', '/users/{action}') 

這裏是我的init.py

def includeme(config): 
    config.add_static_view('user_static', 'user:static', cache_max_age=3600) 
    config.add_static_view('static', 'user:static', cache_max_age=3600) 
    config.add_route('users', '/users/{action}') 
    config.scan() 

這裏是我的views.py

class UserView: 

def __init__(self, request): 
    self.request = request 

@view_config(route_name='users', renderer='templates/users.jinja2') 
def users(self): 
    return {'title': 'Users'} 


@view_config(route_name='users', renderer='json', match_param='action=list') 
def list(self): 
    #return list 

@view_config(route_name='users', renderer='json', match_param='action=add') 
def add(self): 
    #add new user 

@view_config(route_name='users', renderer='json', match_param='action=getUser') 
def getUser(self): 
    #retrieve data for update 

@view_config(route_name='users', renderer='json', match_param='action=updateUser') 
def updateUser(self): 
    #update record 

感謝您對那些誰將會回答,如果你可以給我的代碼一些改進, 請告訴我。

回答

1

我想我應該在這裏爲我的所有動作使用另一條路線。

def includeme(config): 
    config.add_static_view('user_static', 'user:static', cache_max_age=3600) 
    config.add_static_view('static', 'user:static', cache_max_age=3600) 
    config.add_route('users', '/users') 
    config.add_route('action', '/action/{action}') 
    config.scan() 

並修改視圖,將用戶更改爲操作。

class UserView: 

def __init__(self, request): 
    self.request = request 

@view_config(route_name='users', renderer='templates/users.jinja2') 
def users(self): 
    return {'title': 'Users'} 


@view_config(route_name='action', renderer='json', match_param='action=list') 
def list(self): 
    #return list 

@view_config(route_name='action', renderer='json', match_param='action=add') 
def add(self): 
    #add new user 

@view_config(route_name='action', renderer='json', match_param='action=getUser') 
def getUser(self): 
    #retrieve data for update 

@view_config(route_name='action', renderer='json', match_param='action=updateUser') 
def updateUser(self): 
    #update record 
+1

這裏您必須定義2條路線是正確的。一個與模式,一個沒有。這不是**嚴格**必要的,但它是最好的方法。你可以用'/ users/{action}'的模式命名第二個'user_action',或者如果你想要的話。 –