2014-07-25 4 views
0

장고의 views.py 파일에있는 값을 다른 파이썬 스크립트에 전달하려고 시도했으나 어떻게해야하는지 잘 모릅니다. 다음은 views.py 파일의 코드입니다.Django에서 views.py의 값을 사용하여 파이썬 스크립트를 실행합니다.

def get_alarm_settings(request): 
     if request.method == 'POST': 
     username = request.POST.get('username') 
     password = request.POST.get('password') 
     alarm = Alarm.objects.all()[0].alarm_setting 
     response = HttpResponse(alarm, content_type='text/plain') 
     response_a = execfile('alarm_file.py') 
     return response_a 

나는 alarm_file.py에 응답을 전달하려고하는데, 그 방법을 알고 있습니까?

당신은보기 방법에서 반환 된 응답을 처리하는 프로세스 응답 미들웨어를 사용할 수 있습니다
+2

예를 들어 스크립트가 파이썬으로 작성 되었다면, 관련 함수를'import '하고 호출할까요? – Blender

+0

나는 Blender를 완전히 사용하고 있습니다. alarm_file 내부에 함수를 구현하고 import alarm_file을 사용하여 액세스 할 수 있습니다. –

+0

어떻게 파이썬과 동일한 효과를 낼 수 있습니까? alarm_file.py ?? – Rjzheng

답변

4

as 덧글 un alarm_file.py에서 함수를 만들고 가져 오십시오. python alarm_file.py 호출을 동일하게 수행하려면 if __name__ == '__main__':과 alarm_file.py를 사용하십시오. python alarm_file.py이라고 불릴 때 실행할 논리를 포함합니다. 또한 sys.argv을 사용하여 인수를 얻고 명령 줄에 전달할 수 있습니다.

alarm_file.py : alarm_file에서보기 만 가져 오기 기능에서 python alarm_file.py some_argument

및 사용 :

import sys 

def do_something(val): 
    # do something 
    print val 
    # return something 
    return val 

if __name__ == '__main__': 
    try: 
     arg = sys.argv[1] 
    except IndexError: 
     arg = None 

    return_val = do_something(arg) 

이것은 당신이 간단하게 실행할 수 있도록합니다

from alarm_file import do_something 
... 
     response = HttpResponse(alarm, content_type='text/plain') 
     response_a = do_something(response) 
     return response_a 
+0

고맙습니다. 매우 이해할 수 있으며 문제를 해결합니다 !! – Rjzheng

0

를 볼 수 있습니다 인터프리터와 당신은 아마 이런 subprocess.popen (suprocess docs)

뭔가 사용해야하는 스크립트를 실행 subprocess.Popen ([ 'alarm_file.py', 'ARG1', ...]을 ... , 쉘 = True)

관련 문제