【问题标题】:How do you pass a python variable to my templates HTML file?如何将 python 变量传递给我的模板 HTML 文件?
【发布时间】:2020-02-23 08:57:35
【问题描述】:

我正在使用 django,我想学习如何将在我的 python 脚本中生成的变量传递给我的模板 html 文件。问题是我的脚本是一个循环,我希望它在一段时间后更新这个值但是我不能像我尝试渲染时那样通过从 views.py 渲染来做到这一点并将它传递给 html,它只是将所有脚本的输出合并,然后渲染 html 文件,将它们全部放在我放在我的 html 文件中的一个 python 变量引用中。任何帮助深表感谢。谢谢! 这是我到目前为止的循环文件:

def SIVAResponse(audio):
    "speaks audio passed as argument"
    response ="SIVA: " + audio + "\n"
    if 'siva' or 'SIVA' in audio:
        audio = audio.replace("siva", "seeva")
        for line in audio.splitlines():
            os.system("say " + audio)

    else:
        for line in audio.splitlines():
            os.system("say " + audio)

def assistant(command):
    "if statements for executing commands"

    if 'end' in command:
        SIVAResponse("Have a nice day bro.")
        sys.exit()

    elif 'hello' in command:
        day_time = int(strftime('%H'))
        if day_time < 12:
            SIVAResponse('Hello Sir. Good morning')
        elif 12 <= day_time < 18:
            SIVAResponse('Hello Sir. Good afternoon')
        else:
            SIVAResponse('Hello Sir. Good evening')
    else:
        myCommand()

    SIVAResponse('Hi sup bro, My name is siva,what can i do for you?')

while True:
    myCommand()

这就是我的 views.py 的样子:

def LoadSivaGUI(request):
    return render(request, 'SIVA/sivaGUI.html')


def StartAIbutton(request):

    run([sys.executable,"the path to my loop file"],shell=False,stdout=PIPE)
    return render(request, 'SIVA/sivaGUI.html')

【问题讨论】:

  • 你为什么将自己的 python 脚本称为外部可执行文件?直接从视图调用assistant。也没有理由循环运行它。这里没有循环:用户 - 请求,助手 - 响应。您的助手似乎没有保持任何状态。我猜你是为自己做的,所以没有理由讨论它如何为远程的人以及在多个用户的情况下工作。

标签: python django django-templates


【解决方案1】:

你可以在views.py中使用,然后返回模板页面:

import sched, time
s = sched.scheduler(time.time, time.sleep)
def do_something(sc): 
    print "Doing stuff..."
    # do your stuff
    s.enter(60, 1, do_something, (sc,))

s.enter(60, 1, do_something, (s,))
s.run()

【讨论】:

    【解决方案2】:

    使用基于函数的视图,最简单的方法是通过这样的字典在 Return 中添加您需要的信息:

    def LoadSivaGUI(request):
        your_data = some_function_to_get_your_data()
        return render(request, 'SIVA/sivaGUI.html' {'my_data': your_data})
    

    【讨论】:

    • 我不需要将我的函数导入views.py吗?
    • 是的,如果函数 some_function_to_get_your_data() 不在 views.py 中,您需要导入它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 2023-01-11
    相关资源
    最近更新 更多