2017-12-13 10 views
0

TEST2/urls.py処理する方法をhttpresponseredirect

from django.conf.urls import url 
from .import views 
from .forms import forms 

urlpatterns=[ 
    url(r'^$',views.index,name='index'), 
    url(r'^thankyou/$',views.thankyou,name='thankyou') 
] 

TEST1/urls.py

from django.contrib import admin 
    from django.conf.urls import url , include 

    urlpatterns = [ 
     url(r'^admin/', admin.site.urls), 
     url(r'^test2/',include('test2.urls')), 
    ] 

views.py このビューがリダイレクトする必要に/ TEST2 /ありがとう/しかし、なぜそれが起こっています/ありがとう と何ナム

リダイレクト方法により

from django.shortcuts import render 
    from django.http import HttpResponseRedirect,HttpResponse 
    from .forms import Get_name 

    # Create your views here. 
    def index(request): 
     if request.method == 'POST': 
      form = Get_name(request.POST) 
      if form.is_valid(): 
       return HttpResponseRedirect('/thankyou/') 
     else: 
      form = Get_name() 
     return render(request, 'test2/name.html' , {'form':form}) 

    def thankyou(request): 
     return HttpResponse('sai chaitanya') 
を与えられたビューを有効に行うためにe.html フォームを送信した後は、test2/thankyouにリダイレクトする必要がありますが、/ thankyouに送信されます。

<form action="/thankyou/" method="post"> 
     {% csrf_token %} 
     {{ form.as_p }} 
     <input type="submit" value="Submit" /> 
    </form> 

forms.py

from django import forms 
user_choice =[('space',''),('passenger','Passenger'),('driver','Driver')] 

class Get_name(forms.Form): 
    user_name = forms.CharField(label='user name',max_length='50',required=True) 
    pass_word1 = forms.CharField(widget=forms.PasswordInput,max_length='20',label='Password') 
    pass_word2 = forms.CharField(widget=forms.PasswordInput, max_length='20', label='Confirm Password') 
    email = forms.EmailField(label='email',max_length='100') 
    mobile = forms.CharField(label='contact number ',widget=forms.NumberInput,max_length='10') 
    address = forms.CharField(label='Address',max_length='100') 
    user_type = forms.CharField(label='select user type',widget=forms.Select(choices=user_choice)) 

答えて

2

あなたはURL /thankyou/ハードコードされているので、それは/thankyou/に起こっている:

:あなたがにコードを変更することにより、 /test2/thankyou/にリダイレクトすることができます

return HttpResponseRedirect('/thankyou/') 

return HttpResponseRedirect('/test2/thankyou/') 

はベストプラクティスではなく、それをハードコーディングのURLを逆にすることであるしかし:

from django.shortcuts import redirect 

return redirect('thankyou') 
:これは redirectショートカットを使用して簡略化することができ

from django.urls import reverse 

return HttpResponseRedirect(reverse('thankyou')) 

関連する問題