2012-07-23 2 views
1

날 urls.py 사람들은이 방법을 제안 해결하기 위해 기쁘게 도와 urls.py를하지만 ..... 나를 위해 일을 does't정규식

#urls.py 
    (r'^/user/(?P<username>)/subject/([\w|\W]+)/$', subject), 

#template 
{% for subject in subjects %} 
    <li><a href="/user/{{ user.username }}/subject/{{ subject.name }}">{{ subject.name }}</a> {{ del_form.delete }}</li> 
{% endfor %} 

#error 
PAGE NOT FOUND 
Request URL: http://127.0.0.1:8000/user/root/subject/Math%20140 
.... 
.... 
^/user/(?P<username>)/subject/([\w|\W]+)/$ 
+0

장고에 대해 모르겠지만 정규 표현식의 URL은'/'로 끝나야하며 테스트 URL (http : //127.0.0.1....MATH%20140)은 '/'. 선택 사항으로 만들거나 제거 할 수 있습니다. 또한,'[\]는'[\ w \ W] +'이어야한다. 왜냐하면'|'는'[] '에서 아무 것도 의미하지 않기 때문이다. ('. \'와''\ '를 사용하는 것은 어떨까요?''\ \ W]'에 새로운 라인을 포함하는 것입니다. –

+0

어느 정도까지는 다중 라인 플래그 (m) 나는 그것이 있다고 생각하지 않는다. 부차적 인 문제는 URL이 URL로 인코딩되는 반면 주제는 그렇지 않다는 것입니다. –

+0

Django는 기본적으로 URL에 후행 슬래시를 추가합니다. URL 인코딩 문제는 공백을 포함하지 않는 제목 슬러그를 추가하거나 [slugify] 필터를 사용하여 처리하는 것이 가장 좋습니다 (https://docs.djangoproject.com/en/1.3/ref/templates/builtins/# slugify) (그리고보기에서 반전 시키려고 시도합니다. 실제로는 실제 ['SlugField']를 추가하는 것이 가장 좋습니다 (https://docs.djangoproject.com/en/1.3/ref/models/fields/#slugfield) 거기에서 어려움을 피하기 위해). – Dougal

답변

7

당신은 일반에 오류가 표현.

http://ryanswanson.com/regexp/ (펄)

http://www.pyregex.com/ (파이썬)

난 당신이 뭔가 싶은 생각 :

^user/(?P<username>.+)/subject/([\w|\W]+)/ 

을하지만, 당신이 새로운 경우 당신은 정규 표현식 빌더를 사용한다 '. +'를 좀 더 제한적인 것으로 변경하고자 할 수 있습니다.

^user/(?P<username>[^/]+)/subject/([\w|\W]+)/ 

Django가 URL 디스패처에 초기 URL을 제공하는 방식 때문에이 슬래시를 원하지 않을 수도 있습니다.

+0

대단히 감사합니다 !!!!! 그게 바로 내가 필요로하는 것! – Vor

+0

당신은 절대적으로 옳습니다! – Vor