2015-01-13 3 views
0

데이터베이스의 검색 옵션에 Django와 동적 인 URL을 사용하고 싶습니다. 내 검색어에 대한 입력 텍스트 필드와 제출 버튼을 구현하여 쿼리를 시작했습니다. 따라서 버튼을 클릭하면 검색 결과의 새 URL에 텍스트 필드의 용어 (사용자가 작성한 단어)가 포함되어야합니다.Django : 제출 버튼을 통한 동적 URL

하이퍼 링크 대신 제출 버튼을 사용하여 동적 URL을 어떻게 구현할 수 있습니까? 내 텍스트 필드의 값을 내 URL로 가져 오려면 어떻게해야합니까? 저를 도와주세요? 내 (비 작업) 코드의 일부입니다

:

urls.py

urlpatterns = patterns('', 
url(r'^$', views.IndexView.as_view(), name='index'), 
url(r'^search/(?P<term>\w{2}_[0-9.]+)/$', views.search, name='search'),) 

views.py

def search(request, term): 
    search_term = request.GET['term'] 
    #generate results for search_term 
    return render(request, 'app/results.html', {'list_of_r': list_of_r}) 

results.html

<form action="{% url 'app:search/{{term}}' %}" method="get"> 
{% csrf_token %} 
      <input id="text_id" type="text" name="term" maxlength="20" /> 
      <input type="submit" value="submit" name="submit"/> 
</form> 
+0

그런 작업에 JS를 사용하지 않는 이유는 무엇입니까? 입력에서 용어를 가져 와서 몇 가지 유효성 검사를하고 URL에 할당하십시오. – petkostas

+0

감사합니다. 불행히도, 나는 js에 익숙하지 않다. 나는 django-js-reverse를 발견했다. 그것은 어떻게 든 작동 할 것이다. 그러나, js에 django 템플릿을 연결하는 방법을 모르겠습니다. 제안 된 솔루션에 대한 힌트를 좀 더 주시겠습니까? :) 입력을 가져 오는 방법은 무엇입니까? 양식 작업에 URL을 다시 할당하려면 어떻게해야합니까? –

답변

0

그것은 당신이 양식을하는 방식이 아닙니다. 그러나 당신은 필요하지 않습니다. 에. 양식에 의해 제출 된 GET 요청에는 양식의 매개 변수가 자동으로 포함됩니다. 즉, 전체 내용입니다. 따라서 단어 필드에 "text_to_be_searched"값을 사용하여 /search 경로에 제출 한 경우 URL은 "/ search? term = 텍스트 _to_be_searched ". 당신은 다른 것을 할 필요가 없습니다.

+0

하지만 이제 모든 매개 변수가 있습니다. /검색 /? csrfmiddlewaretoken = YYABC & term = text_to_be_searched & 제출 = SUBMIT 이렇게 표시 할 매개 변수 중 하나만 선택할 수 있습니까? /search/term = text_to_be_searched –

+0

GET 양식에 CSRF 토큰이 필요하지 않습니다. –

+0

thanks :) 또한 "submit"매개 변수 나 다른 양식 매개 변수가 내 URL에 나타나지 않도록 할 수 있습니까? (내 검색어 제외) –

관련 문제