2011-02-28 4 views
0

1 ~ n 개의 문자열을 슬래시로 구분하여 Django URL 패턴을 작성하려고합니다. 그것은 이들의 일치 뷰에 각 용어를 통과해야합니다
foo.com/apples/oranges
foo.com/oranges/apples/lizards/google_android/adaman 개의 검색어와 일치하는 URL 패턴

foo.com/apples을

Django에서 나는 전체를 문자열로보기에 전달하고 수동으로 구문 분석 할 수 있지만이 일을 좀 더 우아하게 처리하는 일종의 정규식이 있다면 궁금합니다.

답변

4

정규식은 여러 문자열 부분이 아닌 하나의 부분 문자열과 항상 일치하므로 단일 일치 대신 목록을 가져올 수 없습니다.

수동으로 단어를 분석해야합니다

urlpatterns = patterns('', 
    (r'^(?P<words>\w+(/\w+)*)/$', myView), 
) 

def myView(request, words): 
    # The URL path /a/b/ will give you the output [u'a', u'b'] 
    return HttpResponse(str(words.split("/"))) 

를 사용 사례에 따라, 각 단어는 날짜 또는 제품 카테고리로, 고정 된 의미가있을 수 있습니다. 그럼 당신은 아마 지금과 같은 그들 중 일부는 선택 할 수 있습니다 : 여러 인수와

urlpatterns = patterns('', 
    (r'^(?P<year>\d\d\d\d)/((?P<month>\d\d)/((?P<day>\d\d)/)?)?$', myView), 
) 

def myView(request, year, month, day): 
    # URL path /2010/ will output year=2010 month=None day=None 
    # URL path /2010/01/ will output year=2010 month=01 day=None 
    # URL path /2010/01/01/ will output year=2010 month=01 day=01 
    return HttpResponse("year=%s month=%s day=%s" % (year, month, day)) 
+0

나는 그렇게 생각합니다. 고마워, 그냥 다음 수동으로 구문 분석합니다 - 나는 그렇게 나쁘지 않을 것 같아요. – cloudshao

1

, 아마 매개 변수가 아닌 URL을 구문 분석을 GET 사용하기 쉽습니다. 당신은 할

(r'^$', myView), 

뷰 :

args = request.GET.getlist('arg') 

args 지금 될 것입니다 단지의 urlconf와

http://foo.com/?arg=apple&arg=orange&arg=lizard 

:이 자동으로 필요한리스트로 변환 arg 모든 매개 변수 목록