2016-03-30 20 views
1

İçinde form içeren bir sayfam var. Onun url ben formun Gönder düğmesini tıkladığındaDjango URL'leri nasıl eşleştirilir?

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

, bu

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

URL canlandırmamakta adres çubuğuna ama bir sonraki html dosyasında değişiyor bu url gitmeli olduğunu. Ancak, urls.py dosyasındaki URL'lerin yerini değiştirirsem, yani ikinci URL'yi üstte ve ilk URL'yi altta alırsanız, o zaman iyi çalışır.

Burada neler oluyor?

urls.py dosyası: şablon dosyasında

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

] 

formu kodu:

<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') 

cevap

5

URL en olduklarını sırayla regexes olarak eşleştirilir urls.py'de gösterilir

searchBookResult'den önce searchBook eşleşmeleriyle eşleşen ilk sayfa döndürülür.

Bunları searchBookResult URL'sinin diğerinden önce yeniden sıralamasını yapın.

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

Alternatif olarak, çalıştığı sonunda $ ekleyerek bir hat

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

sonunu belirten senin url sonunda $ içerebilir. Teşekkürler. – User42

İlgili konular