Djangoとurls.py:名前付きURL経由でHttpResponseRedirectを実行するにはどうすればよいですか?
-
05-07-2019 - |
質問
メンバーベースのWebアプリケーションを作成しています。ログイン後にページをリダイレクトできるようにする必要があります。ログインアプリケーションのviews.pyファイルにあるurls.pyスクリプトの名前付きurlを使用したいのですが、どうしたらいいかわかりません。私が持っているのはこれです:
def login(request):
if request.session.has_key('user'):
if request.session['user'] is not None:
return HttpResponseRedirect('/path/to/page.html')
達成したいことは次のようなものです:
def login(request):
if request.session.has_key('user'):
if request.session['user'] is not None:
return HttpResponseRedirect url pageName
これを実行すると構文エラーが発生しますが、何か考えがありますか?
解決
<を使用する必要がありますcode> reverse() utils関数。
from django.urls import reverse
# or Django < 2.0 : from django.core.urlresolvers import reverse
def myview(request):
return HttpResponseRedirect(reverse('arch-summary', args=[1945]))
args
は、URLの正規表現のすべての引数を満たします。辞書を渡すことで名前付き引数を指定することもできます。
他のヒント
Django 1.3以降(リダイレクトメソッドが暗黙的に逆呼び出しを行う)は次のとおりです。
from django.shortcuts import redirect
def login(request):
if request.session.get('user'):
return redirect('named_url')
ifステートメントを if request.session.get( 'user')
のように記述するより簡潔な方法。 has_keyは非推奨になり、.get()はNoneを返します(デフォルトでは、2番目のパラメーターを渡すことで変更可能)。
これをソビエトの返信と組み合わせます:
from django.core.urlresolvers import reverse
def login(request):
if request.session.get('user'):
return HttpResponseRedirect(reverse('my-named-url'))
from django.core.urlresolvers import reverse
from django.shortcuts import redirect
def login(request):
if request.session.get('user'):
return redirect(reverse('name-of-url'))
所属していません StackOverflow