URL을 찾고 템플릿에 전달하기 위해 reverse (name, args)를 사용하는 많은 클래스 기반보기가 있습니다. 그러나 문제는 클래스 패턴을 기반으로하는 뷰를 인스턴스화해야 urlpattern을 정의 할 수 있다는 것입니다. 즉, urlpatterns가 비어있는 동안 클래스가 인스턴스화되어 역방향 오류가 발생합니다. 나는이 템플릿을 lambda : reverse (name, args)에 전달함으로써이 문제를 해결해 왔지만 확실한 해결책이있다. 다음의 간단한 예로서Django 클래스보기 및 역방향 URL
예외와 함께 실패 가
mysite.urls에
from mysite.views import MyClassView
urlpatterns = patterns('',
url(r'^$' MyClassView.as_view(), name='home')
)
views.py 어떤 패턴이없는 mysite.urls urlconf 포함 XXXX 에서 ImproperlyConfigured
class MyClassView(View):
def get(self, request):
home_url = reverse('home')
return render_to_response('home.html', {'home_url':home_url}, context_instance=RequestContext(request))
home.html을
<p><a href={{ home_url }}>Home</a></p>
나는 현재
class MyClassView(View):
def get(self, request):
home_url = lambda: reverse('home')
return render_to_response('home.html', {'home_url':home_url}, context_instance=RequestContext(request))
에 views.py 변경하여 템플릿 렌더링을 실행하는 역 강제로 문제를 해결하고 있어요
그것은 작동하지만이 정말 못생긴 확실히 더 나은 방법이있다 . 그래서 클래스 기반 뷰에서 반대를 사용하지만 역 요구 urlpatterns을 필요로보기를 요구 urlpatterns의 순환 의존성을 피할 수있는 방법이 ...이
편집 : 나는 그래서 이것을 사용하고
:
views.py 기본적으로 몇 가지 다른 콘텐츠 유형에 동일한 사이드 바 템플릿을 사용하고 싶습니다. views21 사이드 바에 표시되는 모델은 임의이지만 형식은 항상 동일합니다.
정확히 내가 뭘 찾고 있었는지, 고마워! – kalhartt