2009-07-14 8 views
5

장고 URL 패턴에서 소수점으로 숫자를 사용하고 싶지만 실제로 가능한지 확실하지 않습니다. (저는 정규식 전문가가 아닙니다).Django URL 패턴에서 10 진수를 사용하려면 어떻게해야합니까?

여기에 내가 URL에 사용하고자하는 내용은 다음과 같습니다

/item/value/0.01 
/item/value/0.05 

그 URL은 $ 0.01 또는 $ 0.05에 평가 항목을 표시합니다. 물론, 나는 쉬운 방법을 취할 수 있고 센트의 값을/item/value/1이 될 수 있도록 전달할 수 있지만 필자의 견해로는 정수가 아닌 십진수 데이터 형식으로 인수를 받고 싶습니다. 어떤 시점에서 1 센트의 분수를 처리해야 할 수도 있습니다.) 이것을 처리 할 장고 URL 패턴에 정규식을 쓸 수 있습니까?

답변

13

이 될 수 슬래시로 시작하지 말아야

urlpatterns = patterns('', 
    (r'^item/value/(?P<value>\d+\.\d{2})/$', 'myapp.views.byvalue'), 
    ... more urls 
) 

URL 같은 것을.

당신이 기능을 가질 수있다 뷰에서

:

def byvalue(request,value='0.99'): 
    try: 
     value = float(value) 
    except: 
     ... 
+0

맨손으로'except :'를 사용하지 마십시오. 이것은 모든 오류를 먹어 버리기 때문에 버그를 숨기고 있습니다. 아마도 ValueError' ('ValueError :'를 제외하고)를 붙잡고 싶을 것입니다. –

13

은 내가 특별히 장고에 대해 잘 모르지만,이 URL과 일치해야합니다

r"^/item/value/(\d+\.\d+)$" 
+6

당신이 갖고 싶어 * "*"/ item/value/(\ d + (? : \. \ d +)) $ "' – Boldewyn

+0

+1 일반적인 대답은 다음과 같습니다. 소수점 이하 두자리 숫자) – btk

+0

@Boldewyn Ur 솔루션이 작동하지 않습니다. int 나 float 모두에 대해서는 사용하지 않으려 고 노력했지만 –

3

값은 $ 0.01 또는 $ 0.05의 harto의 패턴은 다음과 같이 지정 될 수 있습니다 인정하는 경우 :

r"^/item/value/(\d\.\d{2})$" 
+0

고마워요, 각 게시물에 퍼즐 조각이 추가되었습니다. Evgeny는 마법의 탄환을 가지고있었습니다. –

관련 문제