2016-05-13 6 views
0

Djangoに読み込み中のページがありますが、一部のサーバー側のプロセスは進行中です。Django redirect

def loading_page(request): 

    testname = request.session['testname'] 

    done_file = filepath_to_design_dir(testname + ".done") 


    if os.path.exists(done_file): 

     request.session["job_stat"] = "job_done"   
     return redirect("single_output/") 


    else: 

     return render(request, 'single_design/loading.html') 

私の問題は、リダイレクトが行われることです。

http://127.0.0.1:8000/single_design/loading_page/single_output/ 

ではなく、これを行うための正しい方法は何ですか

http://127.0.0.1:8000/single_design/single_output 

???

EDIT:問題が解決しました。ありがとうございます。

URLの先頭のスラッシュなし

from django.conf.urls import url , include 
from . import views 
from django.conf import settings 
from django.conf.urls.static import static 

urlpatterns = [ 

    url(r'^$', views.get_single_input, name='single_design_input'), 
    url(r'^single_output/$', views.single_output, name='single_output'), 
    url(r'^loading_page/$', views.loading_page, name='loading_page'), 
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 
+0

あなたの 'urls.py'を追加できますか? – AKS

答えて

2

を要求され、電流値single_output//single_design/loading_page/single_output/を与えるために、現在のURL /single_design/loading_page/に付加される相対URLとして扱われます。

相対URL ../single_outputを使用できますが、お勧めしません。先頭にスラッシュを含むリダイレクトするURLを返す方が良いでしょう。

return redirect('/single_design/single_output/') 

理想的には、URLパターンの名前を使用する必要があります.Djangoはそれを元に戻します。あなたが名前single_outputを使用する利点は、URLの代わりに

return redirect('single_output') 

を名前を使用することができ、

url(r'^single_output/$', views.single_output, name='single_output'), 

を持っているので、あなたが今することなく、あなたのURLパターンにURLを変更することができるということですビューを更新する必要があります。

3

正しい方法は、ハードコードされたリンクを使用しないことです。 urlresolversを使用してください。

return redirect("some_view_name")