django 및 urls.py : 이름이 지정된 URL을 통해 어떻게 httpresponseredirect를 사용합니까?

StackOverflow https://stackoverflow.com/questions/1208802

문제

회원 기반 웹 응용 프로그램을 작성하고 있으며 로그인 후 페이지를 리디렉션 할 수 있어야합니다. 로그인 응용 프로그램을 위해 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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top