2016-04-18 15 views
0

これはログインページにリダイレクトするときにRemovedInDjango110Warningを取得するのはなぜですか? 。私は、ユーザーがログインしていない場合は、ユーザーがログインしている場合は、1つのページを表示すると、ログインページにリダイレクトしたい私は、次のビューのコードでこれを行う私のインデックスページの場合

from __future__ import unicode_literals 
from django.shortcuts import render_to_response, redirect 
from django.contrib.auth.views import login 

def index(request): 
    if not request.user is None and request.user.is_authenticated(): 
     return render_to_response('foo/index.html') 
    else : 
     return redirect(login) 

しかし、私は、次の警告が出ます:

RemovedInDjango110Warning: Reversing by dotted path is deprecated (django.contrib.auth.views.login) 

すべて私がthis questionですが、それは漠然と関連すると思われるが、私は私の問題に適用する方法を理解することはできませんトピックを発見しました。 「点線で反転する」とはどういう意味ですか?そして私はそれをどこでやっていますか?代わりにどうしたらいいですか?


EDIT:問題がどこにあるのかは分かりませんが、問題はそうではないようです。だから質問はまだ似ていますが、より一般的です。

「点線で反転する」とはどういう意味ですか?私はどこでそれを行うのか把握するにはどうすればいいですか?代わりに何をすべきか?

+0

は、私はより多くの場所で同様のことをしていたが判明します。 – jonalv

答えて

1

この場合、「点在するパスの逆転は廃止されました」というメッセージが少し混乱することに同意します。

は、あなたが持っていると言う:

url(r'^login/$', views.login, name='login-page'), 

廃止の警告を使用すると、URLを逆転するときに、URL名'login-page'の代わりに、点線のパス、'django.contrib.auth.views.login'を使用する必要があることを言っています。

redirectショートカットを使用すると、あなたの場合はURLを元に戻します。あなたは

return redirect(login) 

を行うと呼び出し可能なログインは文字列'django.contrib.auth.views.login'に変換され、文字列は警告をトリガー、逆転されます。

あなたはにその行を変更することにより、警告を停止することができます:それはどこにも使用されていない場合は、その後、from django.contrib.auth.views import loginを削除することができるかもしれ

return redirect('login-page') 

。あなたのビューを書くための慣用的な方法はlogin_requiredrenderを使用することです

注:

from django.contrib.auth.decorators import login_required 
from django.shortcuts import render 

@login_required 
def index(request): 
    return render(request, 'foo/index.html') 
+0

実際のビューを使用してからハードコードされた文字列を使用することに変わってしまいましたが、login_requiredアプローチはさらに優れているので、気にする必要はありません:) – jonalv

関連する問題