2014-01-13 5 views
1

% 20 인 url로 인코딩 된 공백과 일치해야합니다. 여기Django url 정규식이 일치하지 않습니다.

http://domain/something/hello%20world 

같은

내 URL을 볼 수있는 작품이 내 URL의 conf와도이다

url(r'^regtest/(\w+[%20]?\w+)', views.regView) 

보기 : 나는 타격을 받았을 때 여기

def regView(request, x, y=None):          
    print x, 'and', y            
    return HttpResponse('+OK') 

가 로그입니다 URL에서

http://127.0.0.1:8000/regtest/hello%20world 

hello and None 
[13/Jan/2014 02:12:31] "GET /regtest/hello%20world HTTP/1.1" 200 3 

답변

1

패턴 [%20]%, 2 또는 0과 일치합니다.

%20 장고에 의해 해석 및 디코딩

r'^regtest/((?:\w|%20)+)' 

>>> import re 
>>> matched = re.search(r'regtest/((?:\w|%20)+)', 'regtest/hello%20world') 
>>> matched.group(1) 
'hello%20world' 

UPDATE :

를 사용하여 다음과 같은 정규 표현식 대신 단어 문자 (\w) 또는 (|), %20에 맞게 공백으로 (). 따라서 %20 대신 공백을 일치시켜야합니다.

+0

URL conf에 사용할 때 일치하지 않는 경우도 있습니다. 나는 그 중 하나를 십자가 검사했다, –

+0

나는 다음과 같은 정기적 인 experession도 시도. (\ w + (% 20)? \ w +) –

+0

@naveentamanam,'([^ /] +)는 어떨까요? – falsetru

관련 문제