2015-01-30 1 views
0

내 URL을 통해 여러 값을 뷰에 전달합니다.django url에 여러 값을 대시로 사용

url(r'^explore/(?P<id>[\w\-]+)-(?P<region>[\w\-]+)-(?P<location_name>[-\w]+)-(?P<page>[\w\-]+)/$', 
    'project.apps.web_feed.views.display_feed', name='display_feed'), 

내 display_feed보기는 다음과 같이보고 : 일부 블라인드 행운을 통해 (경험이 풍부한 디버깅을 (읽기 :.처럼) 내가보기가 예기치 않은 방식으로 인수를 해석 된 곳 내가 가진 문제를 해결 이전 URL 보였다

/explore/90-LA-Los-Angeles-0/ 

I :

def display_feed(request, id, region, location_name, page): 
    url_scheme = id + '-' + region + '-' + location_name 
    print location_name 

LOCATION_NAME의 값이 두 단어와 같을 것이다 호출 된 URL했다 몇 가지 경우가 있습니다 n은 내 display_feed보기, LOCATION_NAME의 값은 다음과 같습니다 데이터를 쿼리하고 페이지에 표시 할 때 이것은 분명 문제가 발생

Angeles 

. 위의 변경에 해당하는 뷰를

url(r'^explore/(?P<location_name>[-\w]+)-(?P<id>[\w\-]+)-(?P<region>[\w\-]+)-(?P<page>[\w\-]+)/$', 
    'heylets.apps.web_feed.views.display_search_feed', name='search_feed'),  

업데이트, 논리가 순조롭게 작동과의 데이터 표시 : 나는 첫 번째 값 때문에 등 LOCATION_NAME을 가지고있는 URL의 순서를 재 배열

페이지를 예상대로.

URL의 구조에 문제가 있다고 가정하지만, 내가 경험하지 못했던 부분을 짚고 싶지 않고 내가 잘못하고있는 것을 먼저 이해하지 않고 이동하고 싶지는 않습니다.

+0

당신은이 경험을하지 못하고 URL에 ID 또는 슬러그를 사용해야합니다. 절대적으로 URL에 데이터를 전달해야하는 경우 URL을 구성 할 때 querystrings을 사용하고 데이터를 urlencode하십시오. 거룩한 모든 것에 대한 사랑을 위해 구별 자와 이스케이프 문자로 같은 성격을 사용하지 마십시오. – dylrei

답변

0

나는이 문제가 명확한 구분 기호없이 동일한 장소에 많은 정보를 넣었다 고 생각합니다. "-"를 사용하여 값을 분리하려고했지만 여러 단어로 된 이름의 경우 "-"를 구분 기호로 사용하여 예기치 않은 결과가 발생할 수 있습니다. 같은 구조를 유지하려면 여러 단어 이름을 "_"또는 다른 이름으로 구분하십시오.

더 나은 접근 방법이 있습니다 (예 : querystring). 당신은 그들을 사전에 얻을 수 있으며 나중에 사용하고, 당신은 그 문제가되지 않습니다.

다른 접근법은 다른 문자로 args를 구분할 수 있으므로 "/ explore/90/LA/Los-Angeles/0 /"과 같은 URL이됩니다. 이것은 장고 자습서에서 보여지는 방식이며 사용자의 접근 방식보다 훨씬 깔끔합니다.

+0

그게 말이 되네, 많은 감사가 @ cdvv7788 – gffbss