django 및 urls.py : 이름이 지정된 URL을 통해 어떻게 httpresponseredirect를 사용합니까?
-
05-07-2019 - |
문제
회원 기반 웹 응용 프로그램을 작성하고 있으며 로그인 후 페이지를 리디렉션 할 수 있어야합니다. 로그인 응용 프로그램을 위해 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
이것을 실행할 때 구문 오류가 발생합니다. 아이디어가 있습니까?
해결책
당신은 그것을 사용해야합니다 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의 정규 표현식의 모든 인수를 만족시킵니다. 사전을 통과하여 Args라는 이름을 공급할 수도 있습니다.
다른 팁
의 정답 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는 요즘 더 이상 사용되지 않습니다. 그래서 이것을 Soviut의 답장과 결합합니다.
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'))
또한 참조하십시오 https://docs.djangoproject.com/en/dev/topics/http/urls/#reverse-resolution-of-urls
제휴하지 않습니다 StackOverflow