2012-10-11 4 views
0

그래서 내가 다음과 같습니다 메인 urls.py 있습니다장고 URL을 정규 표현식

urlpatterns = patterns('', 
(r'^users/(?P<username>.*)/', include('app.urls')), 
url(r'^users/(?P<username>.*)$',direct_to_template,{'template':'accounts/profile.html'}, name='profile'),) 

과 app.urls.py을

urlpatterns = patterns('',url(r'^app/create/$', create_city ,name='create_city'),) 

내가 로컬 호스트 때 내 문제가 있습니다 : 8000/users/michael/app/create/내보기를 호출하지 않습니다. 나는 문제가 정규 표현식으로 믿을 수 있도록 행운과 URL의 순서를 변경하려고했지만 아무도 변경 해야할지, 아무도?

답변

1

명명 된 그룹 (?P<username>.*)은 0 번 이상 임의의 문자와 일치합니다. 슬래시를 포함하여 사용자 이름에

URL 패턴에서 (?P<username>[-\w]+)을 사용하는 것이 더 일반적입니다. 이것은 소문자 a-z, 대문자 A-Z, 숫자 0-9 하이픈 및 밑줄 집합의 문자 하나 이상과 일치합니다.

profile보기의 패턴에 후행 슬래시를 추가하는 것이 좋습니다.

urlpatterns = patterns('', 
    url(r'^users/(?P<username>[-\w]+)/$',direct_to_template, {'template':'accounts/profile.html'}, name='profile'), 
    (r'^users/(?P<username>[-\w]+)/', include('app.urls')), 
) 
+0

이 내가, 내가 당신의 aproach을 시도하고 일을 일부러 : 모두 함께 퍼팅

, 난 당신이 당신의 urls.py을위한 출발점으로 다음을 사용하는 것이 좋습니다. 내가 http : // localhost : 8000/users/brian/ 을 (r '^ users/(\ w +) /', include ('app.urls'))로 변경하면 404가됩니다. 공장. 왜 그런지 알아? – psychok7

+0

내 프로필 URL 패턴에 오타가있었습니다. 더하기 기호는 대괄호 밖에 있습니다. 이제는 효과가있다. – Alasdair

+0

어떻게 작동합니까, 고마워. 그런데 이전에 게시 한 솔루션의 차이점을 설명 할 수 있습니까? 덕분에 – psychok7