2009-12-06 4 views
0

기본적으로 내가하려는 것은 하키 풀 응용 프로그램이며 데이터를보기 위해 필터링 할 수있는 방법이 많이 있습니다. 예를 들어, 무료 에이전트, 목표, 어시스트, 위치 등을 기준으로 필터링하십시오.장고에서 URL 다루기

많은 쿼리 문자열을 사용하여이 작업을 계획하고 있지만 최선의 방법이 무엇인지 잘 모르겠습니다. 이러한 쿼리 문자열. 나는 일종의 목표로, (나는 페이지를 분할하는 페이지 매김을 사용하고 같은) 만 전달 보여 2 페이지가되고 싶어 말을하자, 나는 다음과 같은 쿼리 설정 한 것 :

?page=2&sort=g&position=f 

을하지만 있다면

?page=2&sort=p&position=f 

HTTP 버젼 : 내가 말을 클릭 인 경우 해당 페이지에, 그리고이 같은, 난 여전히 재치있는 모든 내 다른 필터를 원하는 것 대신에 목표 지점, 나에게이 모든 해당 정보를 보여주는데 무국적자입니다. 저는이 문제에 대한 최선의 접근 방식이 무엇인지에 대해 문제가 있습니다. 좋은 아이디어가 있다면 누구나 감사하게 생각합니다.)

Shawn J

답변

2

먼저, 모두을 매번 저장할지 여부를 고려하십시오. 이 예제에서는 정렬 순서를 변경하지만 페이지 번호는 그대로 유지합니다. 이 페이지에서 다른 요소를 사용하게 될 것이므로 실제로 이해가 되나요? 필터를 변경하면 현재 선택한 페이지 번호가 존재하지 않을 수도 있습니다.

어쨌든 원하는 것으로 가정하면 상태 나 쿠키 또는 그 중 어떤 것에 대해서도 걱정할 필요가 없습니다. 필요한 모든 정보가 이미 GET 매개 변수에 포함되어 있습니다. 필요한 경우 이러한 매개 변수 중 하나를 바꾸고 문자열을 다시 인코딩하면됩니다. GET 매개 변수는 기본적으로 사전 인 QueryDict로 저장되므로 템플릿 태그에서 쉽게 수행 할 수 있습니다.

뭔가 (테스트되지 않은) 같은 :

@register.simple_tag 
def url_with_changed_parameter(request, param, value): 
    params = request.GET 
    request[param] = value 
    return "%s?%s" % (request.path, params.urlencode()) 

당신이 당신의 템플릿을 사용한다 :

{% url_with_changed_parameter request "page" 2 %} 
+0

흠, 이제는 언급 했으니 까, 위치와 같은 새로운 정보를 필터링 한 직후에, 아마 첫 페이지부터 시작하고 싶을 것입니다. 귀하의 솔루션은 많은 경우에 사용할 수 있지만, 잠자기 후 내일은 구현할 것입니다. :) – shawnjan

0

관리 응용 프로그램에서 필터 메커니즘을 확인하십시오. 여기에는 쿼리 문자열에 제공된 필터 정보를 사용하여 동적으로 생성 된 URL을 처리하는 것도 포함됩니다.

또한 쿠키/세션에 실제 상태 정보를 저장하는 것을 고려하십시오.

0

당신은 모든 "매개 변수"를 저장하려면, 나는 그들이 말하는 것 자원 식별자이며 일반적으로 URI의 일부 여야합니다.