2010-08-02 10 views
0

다음 설정을 계속 진행하려고합니다.Regex URL conf Django

  1. Flatpages는 : 어디 내 모든 정적 사이트가 있습니다 (같은 : 약, 연락처, ..)

  2. 동적 페이지 :

    여기

나는 중 하나를 연결하려고 시작 사이트에 Flatpages :

나는 노력이 startsite의 URL의 conf의 정규식이었다

내가 가진 뷰에서

: 나는

/MyApp를에 가면

def def_that_should_just_show_hello_world(request): 
return HttpResponse("Hello experiment world") 

은/I (404) 수 : 없음 FlatPage은 주어진 쿼리와 일치합니다. /myapp/start/404 : No FlatPage가 주어진 쿼리와 일치합니다. /MyApp를/내가

예외 유형을 얻을 수/(1) 시작 : 형식 오류 def_that_should_just_show_hello_world 정확히 1 인수 (2 주어진)

내가 모든 페이지에 "안녕하세요 실험의 세계"를 얻을 것이 설정으로 생각합니다.

어디서 잘못 되었나요? 정규식에서 여러 사이트 접근법을 이해하지 못합니다. 이 모든 사이트에서 hello world를 인쇄하려면 어떻게해야합니까? 그런 다음이 사이트 모두에 1 개의 이미지를 표시하려면 어떻게해야합니까?

도움을 주셔서 감사합니다.

답변

1

정규 표현식에 일치하는 그룹이 있습니다 ((\d+) 비트).

이렇게하려면 해당보기의 URL 끝에 하나 이상의 숫자가 있어야합니다. 마지막에 숫자를 포함하지 않으면이 정규식이 URL과 일치하지 않습니다. (URL 일치는 다른 정규 표현식 일치와 같이 작동합니다).

숫자를 포함 할 때. /myapp/start/1 그러면 다른 문제가 발생합니다. 일치하는 그룹이 있기 때문에 대괄호 안에있는 URL 부분은보기에 다른 인수로 전달됩니다. 뷰는 항상 첫 번째 매개 변수로 요청을 전달하지만이 경우 (\d+)과 일치하는 '1'이 두 번째 인수로 제공됩니다. 이것이이 경우 TypeError를 왜 잡는 이유입니다.

Django의 설명서는 lot of information on how url dispatching work입니다. 그 내용을 읽고 의미가 있는지 확인하십시오.

+0

고마워요! 미안하지만, 이해가 안돼. 특히 다음과 같이 썼습니다 : " 일치하는 그룹이 있기 때문에 대괄호 ("YOU MEAN : (\ d +) ")의 URL 부분이 다른 인수로 전달됩니다." 올바른 인수 (첫째, 둘째)를 전달할 수있는 방법은 무엇입니까? – MacPython

+0

뷰 기능에 다른 인수를 추가하거나 (* args를 추가하여 여러 개의 인수를 포착 할 경우)보기는 URL/myapp/start/1과 일치합니다.서명을'def def_that_should_just_show_hello_world (요청, 번호) :'로하십시오. – adamnfish