의 URL을 리버스해결은 다음 장고 사이트 구조를 고려 장고
root/
- manage.py
- main/
-- __init__.py
-- settings.py
-- urls.py
- phase1/
-- __init__.py
-- urls.py
-- phase1/content/
--- __init__.py
--- models.py
--- views.py
즉 3 개 앱, 주/1 위상/1 위상 및/컨텐츠 /한다.
#main/urls.py
urlpatterns = patterns('',
url(r'^phase1/', include('phase1.urls')),)
#phase1/urls.py
url(r'^problem/(\d+)/$', content.views.view_problem, name='problem')
#phase1/content/models.py
class Problem(django.db.models.Model):
## stuff and fields
def get_absolute_url(self):
return django.core.urlresolvers.reverse('content.views.view_problem',
args=[str(self.id)])
는 분명이 URL/1 위상/문제의 요청/1/콘텐츠에 대해 묻는 :
설정의 root_url은 모듈의 관련 코드는 주/url.py 및 입니다 .view.view_problem을 올바른 인수와 함께 사용하십시오. 그러나 reverse 함수는이 경로가 사용될 때 (예를 들어 템플릿에서)이 경로를 생성하지 않습니다.
'phase1'접두어를 추가하면 reverse()의 첫 번째 인수에서 :
return django.core.urlresolvers.reverse('phase1.content.views.view_problem',
args=[str(self.id)])
이 작동합니다. 이것은 phase1/content가 장고 의미에서 이식 가능한 앱이라고 가정하기 때문에 원하는 내용이 아니므로 "phase1"은 콘텐츠/애플리케이션의 코드 안에 있으면 안됩니다 ...
아마도 내가 뭔가를 놓치고 있습니다. . 누군가 이런 일이 일어나는 이유와 해결책에 대해 적절한 설명을 줄 수 있습니까?
'manage.py'의 설정을 확인하십시오. 'content' 앱과 관련된 디렉토리가 manage.py에 있다면'phase1'을 포함 할 필요가 없습니다. – karthikr