2009-11-25 2 views
3

다른 질문은 '장고 반전 일반보기 사용 방법'및 '장고 명명 URL, 일반보기'그러나 내 질문은 조금 다르다 및 나는 그것을 믿지 않는다. 속임수예요.장고 Django 일반보기, post_save_redirect; 오류 '포함 urlconf doesnt 패턴이 있습니다'

코드 :

from django.views.generic import list_detail, create_update 
from django.core.urlresolvers import reverse 
from django.conf.urls.defaults import * 

partners_add = {'form_class': FooForm, 
     'post_save_redirect': reverse('foo-list'), 
     } 


urlpatterns = patterns('', 
     url(r'^foo/$', list_detail.object_list, foo_list, name='foo-list'), 
     url(r'^foo/add/$', create_update.create_object, foo_add, name='foo-add'), 
    ) 

그러나 나는 오류는 "거기에 어떤 패턴이없는 bar.urls urlconf 포함"을 얻을 수있는 코드를 실행할 때. 그런 다음 역방향 ('foo-list')을 '/ bar/foo /'로 변경하면 작동합니다. 그러나 템플릿에서 {% url foo-list %}를 호출하면 올바른 URL을 얻고 코드가 작동합니다.

역순을 추가하면 동일한 오류가있는 동일한 URL 패턴 내의 모든 URL이 손상됩니다. post_save_redirect 전에없이 개방 견적 -

내가

답변

1

파이썬 2.6에 장고 1.1을 실행하는거야 당신은 오타가 있습니다. 또한 list_detailcreate_update을 가져 왔습니까? 문자열이 아닌 모듈을 직접 참조 했으므로?

는 편집 나는 문제가 partners_add 사전에 reverse로 전화를 가지고에서 오는 것으로 의심. urlconf가 urlconf를 가져올 때 아직 정의되지 않은 속성에 의존하기 때문에 이것은 순환 종속성으로 이어질 것이라고 생각합니다.

해당 전화를 제거해보십시오. 아마도 관련 URL을 하드 코딩하고 작동하는지 확인하십시오.

+0

미안 내 코드에 오타를 붙여 넣거나 편집하지 않아 오타가 발생합니다. 예, list_detail 및 create_update를 가져 왔습니다. 난 그냥 실제 URL에 반대를 변경하면 모든보기가 제대로 작동합니다. – peakit

+0

위의 추가 의견을 참조하십시오. –

0

일하는 한 가지 방법은 create_object 함수를 랩하고 views.py에서 reverse를 사용하는 것입니다.

urlpatterns = patterns('', 
    url(r'^foo/$', list_detail.object_list, foo_list, name='foo-list'), 
    url(r'^foo/add/$','myapp.views.my_create_object', name='foo-add'), 
) 

및 MyApp를 여기에/views.py

from django.views.generic.create_update import create_object 
from feincms.content.application.models import reverse 

from forms import FooForm 


def my_create_object(request): 
    return create_object(request, form_class=FooForm, 
         post_save_redirect=reverse("foo-list")) 
8

내가 여기에있는 문제에 대한 해결책 : urls.py 코드에서

이 같은 것을 볼 수 있었다 http://andr.in/2009/11/21/calling-reverse-in-django/

링크가 사라지는 경우 다음 코드 스 니펫을 붙여 넣었습니다.

from django.conf.urls.defaults import * 
from django.core.urlresolvers import reverse 
from django.utils.functional import lazy 
from django.http import HttpResponse 

reverse_lazy = lazy(reverse, str) 

urlpatterns = patterns('', 
url(r'^comehere/', lambda request: HttpResponse('Welcome!'), name='comehere'), 
url(r'^$', 'django.views.generic.simple.redirect_to', 
{'url': reverse_lazy('comehere')}, name='root') 
)
+1

링크가 깨졌으며 광고 도메인을 가리 킵니다. 누구나 현재 링크가 있습니까? – DarwinSurvivor

2

장고 1.4 알파에는이 문제를 해결하는 데 유용한 reverse_lazy 기능이 포함되어 있습니다.

+0

그리고 여기에'reverse_lazy' 사용 예가 있습니다 : http://stackoverflow.com/a/18108010/953553 – andi