2017-05-14 7 views
0

私は開いたときに各ビューで10秒後に自動的にビューを変更するdjangoアプリケーションを作っています。ビューは2つしかありません。DjangoとCeleryを自動的に交互に変更する

これまでセロリーを使ったことはありません。それは、プロジェクトを行うために変更する予定のテストアプリケーションです。

私がしようとしているのは、10秒後に他のビューを呼び出すことです。

しかし、私はURLを入力するときに起こっている唯一のことは、各ビューは、正確な10秒後にrenderdされていることを、彼らはすべてのヘルプが

tasks.pyを高く評価され、交互に

を変更していませんさ

from celery import shared_task 
from django.shortcuts import redirect 
from django.urls import reverse 
from django.core.urlresolvers import resolve 
import time 


@shared_task 
def open_view(request): 
    current_url = resolve(request.path_info).url_name 

    if current_url == 'view1': 
     time.sleep(10) 
     return redirect("view2") 

    if current_url == 'view2': 
     time.sleep(10) 
     return redirect("view1") 

views.py

from django.shortcuts import render 
from myapp.tasks import open_view 


def view1(request): 
    open_view(request) 
    return render(request, 'view1.html') 


def view2(request): 
    open_view(request) 
    return render(request, 'view2.html') 
+2

これは、あなたがセロリを行うことができますものではありません。これにはJavaScriptが必要です。 –

+0

純粋なjavascriptや他のツールですか?もしあなたが私にjavascriptと一緒にpythonを使うことを学ぶためにいくつかの資料を手に入れることができたら、私は非常に感謝しています。 – Goun2

+0

だから、まず何をしようとしているのですか? 「XYの問題とは?」(https://meta.stackexchange.com/a/66378/218374)を参照してください。 – Igonato

答えて

0

ブラウザの何らかの協力なしに、サーバーからブラウザに何かをプッシュすることはできません(または、Daniel氏によると、JavaScriptが必要です)。ここで

VIEW2するVIEW1のURLから一度リダイレクトされますJS溶液(反対):

var redirect_url = null; 

// .endsWith needs to be polyfilled for IE! 
if (location.href.endsWith('view1')) { 
    redirect_url = '/view2#' // Use # at the end to prevent alternation 
} else if (location.href.endsWith('view2')) { 
    redirect_url = '/view1#' 
} else if (location.href.endsWith('#')) { 
    location.hash = '' // remove the # 
} 

if (redirect_url) { 
    // redirect after 10 seconds 
    setTimeout(function() {location.href = redirect_url}, 10000); 
} 
関連する問題