【问题标题】:How to run a script using Django?如何使用 Django 运行脚本?
【发布时间】:2018-10-12 21:45:03
【问题描述】:

所以我已将 GMail API 连接到我的 Django 项目。当我在 PyCharm 中单独运行 quickstart.py 时,它会运行并完美运行(即使用 GMail 登录打开新选项卡的脚本)。

很好,但现在我必须给用户一个机会来做同样的事情。所以我决定创建一个按钮,按下该按钮,quickstart.py 将运行并且用户将登录。 I tried that by creating an action. Then I tried a usual 'a' tag. And in both cases was error "Not found". 此外,我什至尝试运行一个执行 .py 脚本的 php。听起来很疯狂。

    <?php
echo exec('/quickstart.py');
?>

但错误是一样的。我也尝试过使用 url.py 并编写路径。我想我不明白一些事情。请解释一下。

很快又是这样:按下按钮 -> 运行 quickstart.py

【问题讨论】:

    标签: php python html django web


    【解决方案1】:

    似乎您不必运行 quickstart.py,而是在那里创建一些 function,将您的 from quickstart import your_function 导入您的 views.py 并从 your_custom_view 调用 your_function

    像这样的简化逻辑:

    from quickstart import your_function
    
    def your_custom_view(request):
        button_was_pressed = request.GET.get("button")
        if button_was_pressed:
            your_function()
            return HttpResponse("Button pressed")
        else:
            return HttpResponse("No button pressed")
    

    让你的Button 像一个链接一样工作(如果你不需要POST 请求),就像这样:

    <a href="{% url "your_custom_view_url" %}?button=True">Button</a>
    

    注意:这不是工作代码,而是简化的逻辑,您提供的信息如此简短。

    更新 1
    @ 987654339@:

    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    

    views.py:

    from your_project.settings import BASE_DIR
    
    path_to_json = os.path.join(BASE_DIR, r'client_secret.json')
    flow = client.flow_from_clientsecrets(path_to_json, SCOPES)
    

    【讨论】:

    • 好的,我已经完成了下一步:1.ibb.co/mmv5Dn(这是来自 Google 网站的代码,我已将其放入一个函数中)2.ibb.co/nJQYzS 3.ibb.co/ipDE67 4. ibb.co/bGTQDn 结果它找不到这个文件:ibb.co/eOC7R7 client_secret.json 与 GMail API 连接,所以我猜它进入了 quickstart.py 脚本但失败了。我试图在 urls.py 中创建 .json 文件的路径,但 IDE 甚至没有在列表中显示它,就像它不存在一样。
    • 尝试 更新 1
    • ibb.co/heBepS - 第一步完成 ibb.co/n41OG7 - 我猜你想写 quickstart.py 而不是 views.py。所以那个'os'是红色的并且出现了“未解决的参考”。我导入了它:ibb.co/kGFm3n 它编译没有任何错误。现在当我点击它显示的按钮时:ibb.co/jOXoG7 我搜索并发现一个人遇到了同样的问题,结果他写的不是'client_secret.json'而是'client_secrets.json'。好吧,在 Google 的原始代码中,除了您调用“client.flow_from_clientsecrets”的情况外,它没有“s”。
    • 我刚刚尝试过的:首先我将 .json 文件重命名为不正确的名称(通过调用 refactor-> rename)。然后正确地重命名它(也通过重构->重命名),因为它应该是由谷歌编写的。我只是想确保命名变量和函数没有愚蠢的问题。
    • 当然。我的 client_id、project_id、auth_uri、token_uri、auth_provider_x509_cert_url、client_secret 和 redirect_uris 只有一行但很安静的代码。这个 .json 文件是在我打开 GMail API 并在那里设置我的项目后从谷歌网站下载的。我正在寻找现在可能是什么问题,但还没有想法。 UPD:我会尝试重新上传这个 .json 文件。很快就会回复。
    猜你喜欢
    • 1970-01-01
    • 2018-12-13
    • 2022-01-05
    • 2015-09-29
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多