【问题标题】:How to insert seperate Python scripts in Django如何在 Django 中插入单独的 Python 脚本
【发布时间】:2018-01-19 06:57:55
【问题描述】:

我在 Python 中创建了一个网络爬虫,现在我想将此文件插入到我的 views.py 中,并使用在 HTML 页面上创建的 HTML 按钮执行它们。

我的爬虫名称是 maharera.py,它保存在我保存 views.py 的同一文件夹中

我的 views.py 看起来像这样:

from django.shortcuts import render
from django.conf.urls import url
from django.conf.urls import include
from django.http import HttpResponse
# Create your views here.

def index(request):
    first = {"here":"will enter more details"}
    return render(request, "files/first-page.html", context=first)
    #return HttpResponse("<em>Rera details will be patched here</em>")    

将它插入views.y 后,我想使用我创建的html HTML 执行该文件。我该怎么做?

【问题讨论】:

    标签: django python-3.6


    【解决方案1】:

    问题的实际答案

    假设maharera.py的内容如下

    def scraper(*args, **kwargs):
        #the scraper code goes here
    

    那么你需要在views.py文件中按如下方式导入它

    from django.shortcuts import render
    from django.conf.urls import url
    from django.conf.urls import include
    from django.http import HttpResponse
    # Create your views here.
    import maharera
    
    def index(request):
        first = {"here":"will enter more details"}
        return render(request, "files/first-page.html", context=first)
        #return HttpResponse("<em>Rera details will be patched here</em>") 
    
    def scraper_view(request):
        maharera.scraper()
        return HttpResponse("<em>Scraper started</em>") 
    

    建议不要通过这样的 http 请求运行网络 scraper。 Http 请求应该在几秒钟内返回响应,并且不应该花费很长时间。

    当您点击scraper_view 时,它将开始执行其中的代码。在 scraper 视图中,调用了 scraper,我们不知道该函数需要多长时间才能结束。直到该函数没有结束,页面的响应才会返回给用户。

    对于如此长时间运行的任务,您应该查看任务队列。 调查celery

    【讨论】:

    • 我正在学习 django 并尝试在我的办公室工作中尝试它。假设我的老板想要获取数据,他将按下按钮并抓取数据。感谢您的回复和建议,一旦我在 django 中变得强大,我一定会遵循您的建议。现在代码正在运行。一件事我如何使用 html 按钮执行这个刮板。我有创建按钮,当我按下它时应该在 DJANGO 中启动刮板。
    • 因此,既然您正在学习 django,那么这是学习正确知识的最佳时机。这里有一件小事可以帮助你。当你的老板点击刮板按钮时,在数据库中创建一个变量来检查刮板是否完成了任务。开始一个 celery 任务,它会报废。当刮板结束时,让任务更新数据库变量。创建一个新视图,检查刮板是否完成任务,如果完成显示数据,否则显示scrapping in progress
    • 另外不要忘记将此答案标记为问题的答案。 :)
    猜你喜欢
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多