2015-07-18 4 views
0

Как получить доступ к myvar за пределами функции страницы. Я могу напечатать myvar, когда у меня есть печать (myvar) внутри функции страницы, но не тогда, когда она снаружи.Как получить доступ к переменной вне функции в Django

def page(request): 
    form = MyForm(request.POST or None) 

    if form.is_valid(): 
     instance = form.save(commit=False) 

     myvar = form.cleaned_data.get("myvar") 
     # myvar is printed here 
     print(myvar) 
     if not myvar: 
      myvar = "this" 
     instance.myvar= myvar 
     instance.save() 
    context = { 
     "form" : form 
    } 
    return render(request, "home.html", context) 

# I want to print the contents of myvar but it doesn't work here 
print(myvar) 

Благодаря

+2

myvar не существует вне этой функции, и даже если это возможно, вы не можете запускать какой-либо код для его печати. Лучше объясните, что вы на самом деле пытаетесь сделать. –

+0

Я пытаюсь получить текст, который был введен в charfield на home.html, и использовать этот текст в функции python. – PiccolMan

+0

Можете ли вы опубликовать функцию? –

ответ

-1

Вы не можете. Вы должны прочитать: Python scope rules

Если вы настаиваете на этом, вам придется использовать глобальный myvar. Что-то в этих строках

myvar = None 

def myfn(args): 
    global myvar 

    myvar = "z" 

print myvar 

, хотя это нецелесообразно.

Кроме того, оператор print(myvar) запускается только один раз при импорте модуля, поэтому, скорее всего, он не будет делать то, что вы хотите.

+0

Не рекомендуйте это. Глобалы еще более опасны, чем в нормальном коде Python, поскольку они будут использоваться всеми запросами. –

+0

@ DanielRoseman Я знаю, поэтому «это нецелесообразно». Кроме того, он должен читать о масштабах и знать, что существует «глобальное». –

0

Вам нужно подумать о цикле запроса/ответа здесь. Как я сказал в комментарии, даже если это было разрешено правилами обзора Python, что бы назвало вашу функцию? Запрос завершен и вернулся.

Если вам это нужно, вам нужно будет вызвать функцию самостоятельно из представления и передать свое значение.

Смежные вопросы