2010-03-25 5 views
1

{% url %} 태그가있는 URL의 일부만 가져 오는 데 문제가 있습니다.Django : {% url %}을 (를) 사용하여보기 URL의 일부분 찾기

의 UUID에 의해 항목을 삭제하는 것을 의미
url("^delete/(?P<uuid>[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})/$", 
    deleteView, 
    name = "delete"), 

이 (뷰가 매개 변수 당신이 볼 수있는 "UUID를"소요) :

의 URL 설정이 포함되어 있습니다. URL 매핑이 변경 될 때 모든 템플릿을 변경하고 싶지 않기 때문에 이름이 지정된 URL (이 예제에서는 "delete")을 사용하고 있습니다.

그런 다음 템플릿에서 AJAX를 통해 해당 URL에 액세스하고 싶지만 JavaScript를 사용하여 UUID 매개 변수를 제공해야하므로 실제로는 URL의 /delete/ 부분 만 있으면됩니다. 현재 해결 방법은 다음과 같습니다.

uuid = "some uuid that should be deleted on the server"; 

$.get("{% url myinstancenamespace:delete "00000000-0000-0000-0000-000000000000" %}" 
     .replace("00000000-0000-0000-0000-000000000000", uuid), 
     function(data) 
{ 
    // process server response 
}, "text"); 

이것은 나에게 해킹처럼 보입니다. 그래서, 이것보다 더 좋은 해결책이 있습니까?

답변

1

나는 완전히 hackish 소리가 나지 않는다, 나는 말해야한다.

하지만 실제로 그런 식으로하고 싶지 않은 경우 ?: 접두어로 URLconf에 uuid 매개 변수를 옵션으로 지정하는 것이 좋습니다. 물론 uuid를 실제로 사용했는지 확인하려면 뷰에서 좀 더 검증해야합니다.

+0

그런 다음 URLconf를 알아야하는 다른 곳으로 안내하는보기에서 URL을 다시 분석해야합니다. 그래서 그것은 또 다른 (더 큰) 해킹 IMO입니다. – AndiDog

+0

전혀 아닙니다. uuid는 여전히 매개 변수로 전달되지만 함수 서명은'def deleteView (request, uuid = None) :'이되며'if uuid is None'을 확인하면됩니다. –

+0

전체 정규식을 포함하도록 답을 편집 해 주시겠습니까? 정확히 내가 무슨 뜻인지 알지 못합니다 (답을 해석하는 방식으로 작동하지 않습니다.). – AndiDog