2016-03-30 6 views
1

私はフォームのあるページを持っています。そのURLはDjangoのURLはどのように一致しますか?

url('tasks/searchBook', views.searchBook, name='searchBook'), 

私は、フォームの送信ボタンをクリックしたとき、それは

url('tasks/searchBookResult/', views.searchBookResult, name='searchBookResult'), 

このURLに行くべきURLがアドレスバーに変更されているが、次のHTMLファイルがレンダリングされていません。 しかし、urls.pyファイルでURLの場所を交換すると、2番目のURLを上に、最初のURLを下に置くと正常に動作します。

ここで何が起こっているか

urls.pyファイル:テンプレートファイルの

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url('tasks/searchBook/', views.searchBook, name='searchBook'), 
    url('tasks/searchBookResult/', views.searchBookResult, name='searchBookResult'), 

] 

フォームコード:

<form action="{% url 'lms:searchBookResult' %}" method="post"> 
     {% csrf_token %} 
     <div class="inner centerAlign"> 
      <input type="text" id="bookId" name="bookId" placeholder="Book ID" class="inputField"></input> 
     </div> 
     <div class="inner centerAlign"> 
      <label>OR</label> 
     </div> 
     <div class="inner centerAlign"> 
      <input type="text" id="bookTitle" name="bookTitle" placeholder="Book Title" class="inputField"></input> 
     </div> 
     <div class=" inner centerAlign"> 
      <input type="submit" value="Search" class="button button-primary" name="searchBook"></input> 

     </div> 
    </form> 

views.py:

from django.shortcuts import render 
from django.http import HttpResponse 

# Create your views here. 

def index(request): 
    return render(request, 'lms/loginPage.html') 

def searchBook(request): 
    return render(request,'lms/tasks/searchBook.html') 

def searchBookResult(request): 
    return render(request,'lms/tasks/searchBookResult.html') 

答えて

5

のURLは、彼らがあるために正規表現として一致していますurls.pyに表示されます。

searchBooksearchBookResultより前に一致するため、最初のページが返されます。

これらを並べ替えるだけで、searchBookResultのURLが前になります。

url('tasks/searchBookResult/', views.searchBookResult, name='searchBookResult'), 
url('tasks/searchBook/', views.searchBook, name='searchBook'), 

また、あなたが働いていた最後に$を追加

url('tasks/searchBook/$', views.searchBook, name='searchBook'), 
+0

行の終わりを示し、あなたのURLの末尾に$を含めることができます。ありがとう。 – User42

関連する問題