如何从Django中的views.py重复调用函数?

时间:2017-09-12 22:41:51

标签: python html django python-2.7

如何从Django中的views.py重复调用函数?

urls.py

urlpatterns = [
    url(r'^$', views.index),
    url(r'^report/(?P<extension>\d+)/$', views.report),
]

views.py

def report(request, extension):

    """
        I will do some logic here. I need the extension variable for 
        database purposes.
      EX: 
        my_array = Report.objects.fetching_reports(extension='3')
    """

    return render(request, 'report.html’)

如果你在扩展中注意到,我传入了3.想法是每个扩展都有自己的数据。但是,我希望它们在相同的html模板上呈现。我将从扩展1开始渲染,最多12个然后返回到1.假设扩展4缺失,它将被重定向到扩展5.这些扩展将来自我的数据库。

Example:

…/report/1/
…/report/2/
…/report/3/    ## will skip 4 if not available 
…/report/5/
…/report/6/    ## and so on..

每个扩展程序将呈现相同的HMTL模板。现在,如果我直接在浏览器中输入URL模式,我可以成功呈现这些报告。有没有办法连续调用report(),让我们说每15秒一次?或者我应该采取不同的方法吗?

非常感谢您的阅读。

2 个答案:

答案 0 :(得分:1)

def report(request, extension):

    try:
        my_array = Report.objects.fetching_reports(extension=extension)
    except Report.DoesNotExist:
        my_array = None

    extension +=1

    if my_array = None:
        return HttpResponseRedirect(reverse('your_project_name':'your_app_name', kwargs = {'extension':extension}))
    else:
        return render(request, 'report.html', {'extension':extension})

如果4不存在则会跳到下一个对象,如果你想在15秒后跳过,你可以将JavaScript重定向到下一页并使用扩展名var

答案 1 :(得分:1)

对于每个报告,将next网址传递给模板并使用javascript重新加载。

<script>
  function nextReport() { window.location.href = "{{ next }}"; }
  setTimeout(nextReport, 15000);
</script>