2017-10-25 8 views
0

등록시 user_type을 확인하고 사용자를 세 개의 웹 페이지 중 하나로 이동합니다.Django는 리디렉션시 URL을 변경하지 않습니다

올바른 페이지 레이아웃을 보여주고 있지만 URL은 등록 페이지와 동일하게 유지됩니다.

EG : "사용자 유형 (1) 정보"

을 내가 URL을 변경해야 리디렉션을 사용하여 생각하지만, 그것이 작동하지 않는 것 : URL이 "http://127.0.0.1:8000/users/register/" 페이지 표시했다.

views.py :

def register(request): 

if request.method == 'POST': 
    form = RegisterForm(data=request.POST) 
    if form.is_valid(): 


#  profile = form.save(commit=False) 
#  profile.user = request.user 
#  profile.save() 

     user = form.save() 
     profile = user.userprofile 
     user_group = form.cleaned_data.get('user_type') 
     profile.user_type = user_group 
     profile.save() 


     # form.save() 
     username = form.cleaned_data.get('username') 
     password = form.cleaned_data.get('password1') 
     user_group = form.cleaned_data.get('user_type') 
     user = authenticate(username = username, password = password) 
     login(request, user) 

     print(user_group) 
     print(type(user_group)) 

     if user_group == '1': 
      return HttpResponseRedirect("https://stackoverflow.com/users/business/") 
    #  return 
    #  HttpResponseRedirect('http://127.0.0.1:8000/users/business/') 

    #   return HttpResponseRedirect(reverse('users:business')) 
    # return redirect(request, 'users/business.html') 

     elif user_group == '2': 
      return redirect(request, 'users/student.html') 
     elif user_group == '3': 
      return redirect(request, 'users/tourist.html') 
    # else: 
    #  return redirect('main:index') 
    else: 
     print(RegisterForm.errors) 

else: 
    form = RegisterForm() 


def business_view(request): 
# return redirect(request, 'users/business.html') 
# return HttpResponseRedirect('users/business.html') 

#  return redirect('/users/business/') 
    return redirect('users/business') 

def student_view(request): 
    return redirect(request, 'users/student.html') 

def tourist_view(request): 
    return redirect(request, 'users/tourist.html') 

urls.py 어떤 도움

urlpatterns = [ 
# Login page 
    #url(r'^login/$', login, {'template_name': 'users/login.html'}, 
name='login'), 

url(r'^login/$', login, {'template_name': 'users/login.html'}, 
name='login'), 

#url(r'^login/$', views.log_in, name='login'), 



# Register page 
url(r'^register/$', views.register, name='register'), 


# Business page 
#url(r'^business/$', views.business_view, name='business'), 
url(r'^$',views.business_view), 


# Student page 
url(r'^student/$', views.student_view, name='student'), 

# Tourist page 
url(r'^tourist/$', views.tourist_view, name = 'tourist'), 

] 

감사합니다.

+0

'.html'을 추가 하시겠습니까? –

답변

0

URL 번호을 리디렉션 인수로 사용하십시오. 즉, 학생 페이지 사용시 return redirect('student') (URL을 정의하는 동안 정의 된 이름)으로 리디렉션하십시오. 예 : 당신이 HTML 페이지를 표시하는 대신 render를 사용하려면 귀하의 의견에 또한

if user_group == '2': 
     return redirect('student') 

. 예 :

from django.shorcuts import render 
def student_view(request): 
    return render(request, 'users/student.html') 
+0

Ohh ok, 처음에는 student_view도 렌더링으로 사용했습니다. 끝내서 물건을 고치려고 변했습니다. 나는 예외 유형 얻을하지만 이러한 변화와 는 : NoReverseMatch – momozar

+0

를 나는 작업을 가지고 : 경우 user_group == '1': 반환 HttpResponseRedirect를 (반대를 ('사용자 : 사업')) 도움을 감사, 대단히 감사합니다 – momozar

관련 문제