HTTP GET 요청에서 값을 가져옵니다. 값이 none이 아닌지 확인하고 있습니다. 그럴 경우 반환 메시지가 보내지고 그 밖의 처리가 진행됩니다.장식 자 생성
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
어떻게하면 데코레이터로이 작업을 수행 할 수 있습니까? 내가 진행하는 동안
편집 , 나는 I가 "재활용"data
이 None
또는 not.It도 installation_name
이 비어 있거나 여부를 확인하고 내가 필요로 확인 다른 장식이 필요하다는 것을 발견 모두 installation_name
및 data
. 다시 코드를 작성했습니다. 그러나 값은 상호 교환됩니다. 즉 data
은 installation_name
이되고 그 반대의 경우도 마찬가지입니다. 좀 봐 주시겠습니까? 이와
import functools
def with_description(fn):
@functools.wraps(fn) # This is not strictly necessary, just pulls info (docstrings, etc) from fn and pushes into the wrapper
def wrapper(*args, **kwargs):
# Precheck
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')
# If precheck passes, call the actual function
fn(*args, **kwargs)
return wrapper
당신이 PreCheck를 통과하는 경우에만 실제로 장식 모든 기능이 불려 가도록 승리 : 감사
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'은 무엇입니까? 데코레이터와 같이 흐름이 어떠해야하는지 설명해 주시겠습니까? – aIKid
[(args와 함께) 사용자 정의 장고 뷰 데코레이터를 만드는 데 문제가 있음] (http://stackoverflow.com/questions/19965036/having-trouble-making-a-custom-django-view-decorator-with-args)) –
@aIKid -'func'는'api_servers'입니다. 그래서, 흐름은 이와 같습니다. 나는'installation_name'을 얻는다. 나는'installation_name'이''''인지 확인한 데코레이터를 생성 할 필요가 있습니다. 그리고 다른 어떤 것을 반환하면 래핑 된 함수를 호출합니다. –