Я получаю значение из запроса HTTP GET. Я проверяю, не является ли значение не равным ни одному. Если это так, то отправляется сообщение с возвратом, происходит дальнейшая обработка.Создание декоратора
def api_servers():
installation_name = request.args.get('installation_name', '')
if installation_name == '':
data = {"description": "Installation Name is required"}
return HttpResponse(json.dumps(data), status=400, mimetype='application/json')
data = { "arms": arms_list }
return HttpResponse(json.dumps(data), status=200, mimetype='application/json')
Теперь, я хочу проверить это условие, используя функцию декоратора. Это то, что я пытаюсь.
def wrapper(func):
def inner(): # I dont know what to pass in the arguments. Installation_name?
# Maybe? But then how do I pass Installation_name
if installation_name == '':
data = {"description": "Installation Name is required"}
return HttpResponse(json.dumps(data), status=400, mimetype='application/json')
else:
return func()
return inner
Как я могу достичь этого через декоратор?
EDIT Пока я исходил, я обнаружил, что мне нужен еще один декоратор, который проверяет data
является None
или not.It также проверяет installation_name
пуст или нет, а затем мне нужно «рецикл» как installation_name
и data
, Я снова написал ваш код. Но значения меняются, т. Е. data
получает installation_name
и наоборот. Можете ли вы, пожалуйста, посмотреть? Благодаря
def with_description(fn):
def inner(*args, **kwargs):
# Precheck
installation_name = 'inst1'
if installation_name == '':
return 1
# If precheck passes
return fn(installation_name, *args, **kwargs)
return inner
def with_description1(fn):
def inner(*args, **kwargs):
# Precheck
data = 'data1'
if data == '':
return 1
# If precheck passes
return fn(data, *args, **kwargs)
return inner
@with_description
@with_description1
def api_servers1(installation_name,data):
print installation_name,data
api_servers1()
Что было бы «func' be? Не могли бы вы объяснить, как будет выглядеть поток с декораторами? – aIKid
Возможный дубликат [У вас возникли проблемы с изготовлением декоративного декоратора django (с помощью args)] (http://stackoverflow.com/questions/19965036/having-trouble-making-a-custom-django-view-decorator-with-args) –
@aIKid - 'func' будет' api_servers'. Итак, поток подобен этому. Я ПОЛУЧИТЬ 'installation_name'. Мне нужно создать декоратор, который будет проверять, является ли 'installation_name'' ''', а затем возвратить что-то еще, чтобы вызвать завернутую функцию. –