2017-10-25 26 views
0

登録時に私はuser_typeをチェックし、ユーザを3つのWebページのいずれかに移動します。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」を追加してURLの末尾を追加しますか? –

答えて

0

urlnameをリダイレクト引数、つまり学生ページの使用return redirect('student')(URLを定義するときに定義された名前)でリダイレクトする場合にのみ使用してください。例えば。

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

また、htmlページを表示するビューでは、代わりにrenderを使用してください。例えば。

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

Ohh ok、私は最初に、student_viewをレンダリングするためのdefを持っていました。物事を修正しようとしてそれを変更して終了しました。これらの変更により 私は例外の種類を取得するのに:USER_GROUP ==「1」の場合 :NoReverseMatch – momozar

+0

私はそれが働いてしまった リターンHttpResponseRedirect((「ユーザー:ビジネス」をリバース))の助けを おかげで、非常に高く評価 – momozar

関連する問題