2011-08-21 3 views
1

지리적 이름 즉/new_york 또는/new-york 등을 처리하고 싶습니다. 그리고 new-york은 뉴욕에 대해 django-slugify이기 때문에 어쩌면 밑줄이있는 이름이 더 좋아 보이더라도 slugifed 이름을 사용해야합니다. django slugify와 같은 알고리즘을 통해 URL 생성을 자동화하십시오. 추측은 ([A-Za-z]+) 또는 간단히 ([\w-]+) 일할 수 있지만 안전한 것으로 나는이 경우 가장 좋은 정규식을 물어볼 것입니다.글자, 대시 및 밑줄에 파이썬 정규식을 사용할 수 있습니까?

('/([0-9]*)',ById) #fetches와 지금은 다른 정규식 예를 들어, 이름과 일치 할

ID로 엔티티를 표시 이미 클래스에 번호 연결 번호를 처리하는 정규 표현식있어 new_york을 사용하여 /new_york에 대한 요청이 적절한 처리기에서 처리되도록합니다. 기본적으로 위의 정규 표현식 부정 또는 조합 문자 + 밑줄 및 어쩌면 대시 - 이름을 지리적 및 이후이 정규식을 사용할 수 있지만 그것은 단지 모든 걸립니다 선행 때문에 작동하는 것 같아요.

('/(.*)', ByName) # 관련 장소의 맞춤 매핑을 통해 #Handle/new_york 엔티티,/sao_paulo 엔티티 등

다른 핸들러가있어서 충돌하는 정규 표현식을 원하지 않고 다른 요청 처리기가 있기 때문에 정규식을 공식화하는 방법을 권할 수 있습니까?

표현식이 2 개의 정규 표현식에 적합한 경우 어떻게 작동합니까? 어떤 우선 순위가 더 높습니까? 엔티티 또는 인스턴스 변수 및 다른 언어로 다른 이름을 가진 지리적 위치와 같은 특수한 문제와 같이 지리 데이터 저장소에 대한 정규 표현식 및 가능한 구현을 작성하는 방법을 더 많이 알려줄 수 있습니까? 독일의 독일어는 Deutschland라고 불리므로 gettext/djang.po 파일로 번역 할 수도 있습니다.

답변

3

첫 경기가 승리합니다.

일반적으로 URL은 경로의 다른 부분에서 다를 수 있습니다. 예를 들어, 당신은 할 수

/cities/(?P<city>[^/]+) 
/users/(?P<user>[^/]+) 

많은 경우에

[^ /] + 그것은 별도의 경로 요소로 사용되기 때문에 일반적 피할 것/제외하고 아무것도 일치하기 때문에 좋은 정규식입니다.

글자 (글자 또는 숫자)만으로 URL을 분리하는 것은 좋지 않지만 생각하고 싶다면 [-A-Za-z_]+을 사용하십시오 ("-"는 []의 시작 또는 백 슬래시가 필요함).

숫자가 일치 할 수도 있으므로 \w을 피하십시오. 당신이 정말 미쳐 다른 곳에서 하나의 핸들러에 숫자와 문자 + 숫자를 보내려하지 않는 경우 사용 : 순서대로

/(?P<id>\d+) 
/(?P<city>[-\w]+) 

.

+0

감사합니다. andrew 저는 정규 표현식을 올바르게 사용하는 방법을 배우려고합니다. 하나의 URL은/view/323처럼 보일 것입니다. 여기서 자리 부분은 동적이며 엔티티 ID를 나타내며 동시에 지리 당 요청을 처리 할 수 ​​있습니다./new_york/manhattan. 지금은 3 개의 정규 표현식을 설정했는데 하나는 new_york와 일치하고 하나는/new_york/manhattan과 일치하지만 여전히 단일 엔티티 뷰와 충돌하지 않습니다. –

관련 문제