Python 2.7
, Django 1.3.1
을 사용 중입니다.장고가 바운드 형식으로 다른보기로 리디렉션
임의의 페이지에서 호출 할 수 있고 코드 중복없이 동일한 페이지로 리디렉션되는 로그인 기능을 구현하려고합니다. 현재 가지고있는 현재의 방법은 두 개의보기가 있습니다. 하나는 홈페이지 용이고 다른 하나는 로그인 용입니다. sign_in보기에서 양식 ()으로 가정보기로 리디렉션 할 수 있기를 원합니다. 주요 문제는 사용자가 잘못된 데이터 (예 : 잘못된 비밀번호)를 입력하면 같은 페이지로 리디렉션하고 싶지만 원래 양식의 컨텍스트를 보내려고한다는 것입니다. 명시 적으로 view 함수를 호출하지 않고이 작업을 수행 할 수 있기를 원합니다. 임의의 페이지에서 수행 할 수 있기를 원하기 때문입니다. 어떻게해야합니까? 내 현재 시도 데이터가 유효하지 않은 경우 언 바운드 폼을 항상 반환합니다.
나의 현재 코드 (simplfied)된다
urls.py
urlpatterns = patterns('myapp.views',
url(r'^$', 'index', name='home'),
url(r'sign_in/^$', 'signin', name='sign_in')
)
views.py
def index(request, loginForm=LoginForm)
extra_context = dict()
extra_context['login_form'] = loginForm
return direct_to_template(request, 'home.html', extra_context=extra_context)
def signin(request)
if request.method == 'POST':
login_form = LoginForm(request.POST, request.FILES)
if login_form.is_valid():
# login user
redirect_view = reverse('home')
return redirect(redirect_view, kwargs={'loginForm': login_form})
# I also tried:
# return redirect(redirect_view, loginForm=login_form)
# what works is:
# return index(request, loginForm = login_form)
home.html
<form action="{% url sign_in %}" method="post">
{{ form.as_p }}
</form>
성공하면 단순히 신호 페이지로 리디렉션됩니다. login_form이 유효하지 않을 때 걱정됩니다. 원본 페이지에 해당하는보기로 리디렉션하고 싶습니다 (예, 'next'매개 변수를 통해 얻을 수있는 링크). 오류를 나타내는 바운드 폼이 있습니다. – saurabh
그건 귀엽지 만 재앙 일 수도 있습니다. 오류가있는 경우 오류 수정에 초점을 맞춘 단일 페이지에서 사용자를 원하십니까? – Ted
예. 이것이 가능한 하나의 해결책이지만 사용자가 다른 것처럼 보이는 페이지로 리디렉션되는 단점이 있습니다. 실패한 리디렉션이 동일한 페이지에서 수행 될 수 있는지 알고 싶습니다. 대답이 안된 것 같니? – saurabh