如何在Django中访问函数外的变量

wfveoks0  于 2022-12-20  发布在  Go
关注(0)|答案(3)|浏览(127)

如何在page函数之外访问myvar?当page函数内部有print(myvar)时,我可以打印myvar,但当它在page函数外部时,我就不能打印myvar了。

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)

谢啦,谢啦

0yg35tkg

0yg35tkg1#

这里你需要考虑一下请求/响应循环。正如我在评论中所说的,即使Python作用域规则允许这样做,什么会调用你的函数呢?请求结束了,已经返回了。
如果需要,您必须自己从视图内部调用该函数,并将值传递给它。

cvxl0en2

cvxl0en22#

从django. http://shortcuts导入渲染从django.http导入请求

在此处创建视图。

延迟主页(请求):return render(request,'home.html',{“name”:“箱涵结构分析设计和详图工具”})
num 1 =请求。GET ['h'] num 2 =请求。GET ['ts']
定义添加(编号1,编号2):

result=num1+num2
return render('results.html',{'result':result})
lfapxunr

lfapxunr3#

你不能。你应该阅读Python作用域规则
如果您坚持这样做,就必须使用全局myvar

myvar = None

def myfn(args):
    global myvar

    myvar = "z"

print myvar

尽管这是不可取的。
此外,print(myvar)语句在导入模块时只运行一次,因此很可能不会执行您想要的操作。

相关问题