2013-07-17 2 views
0

modelform 클래스에 URL을 가져오고 싶습니다. 본인은 The included urlconf manager.urls doesn't have any patterns in it입니다. 그러나 내 경우에는 reverse_lazy 기능이 작동하지 않습니다.
포함 된 urlconf xxxx.urls에 패턴이 없습니다.

내 경우 :

captchahelper루트응용 프로그램입니다.

루트 urlpatterns (루트 프로젝트 아래에 urls.py) :

urlpatterns = patterns("", 
    ..... 
    # captcha 
    url(r'^captcha/', include('captchahelper.urls')), 
    ..... 
} 

보안 문자 urlpatterns (captchahelper 프로젝트에서 urls.py) :

urlpatterns = patterns('', 
    url(r'^$', views.captcha , name="views_captcha"), 
    url(r'^refresh/$', views.refresh , name="views_refresh_captcha"), 
) 


볼 수 있습니다. captchahelper 프로젝트 아래의 py

def captcha(request): 
    ..... 
    return HttpResponse(captcha.gen_img_by_code(code),'image/jpeg') 

GET :

class CaptchaForm(forms.ModelForm): 
    ..... 
    captcha = Captcha() 
    encoded = captcha.get_encrypt_code() 
    captcha_image = urlresolvers.reverse_lazy('views_captcha') + '?encoded='+encoded 
    ..... 
    def clean_captcha_text(self): 
     .... 


차례 초과 오류 :
/계정/가입/인 현재의 URL를 (또한이 root.urls에 포함), 방문자가이 페이지를 볼 때, 위의 클래스는 해당 뷰 함수에서 init이됩니다.

ImproperlyConfigured at /account/signup/ 
The included urlconf root.urls doesn't have any patterns in it 


D:\Python27\lib\site-packages\django\core\urlresolvers.py in reverse 
    return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)) ... 
▼ Local vars 
    Variable Value 
    ns_pattern 
    '' 
    viewname  
    'views_captcha' 
    args  
    [] 
    current_app 
    None 
    prefix 
    u'/' 
    parts 
    ['views_captcha'] 
    resolver  
    <RegexURLResolver root.urls (None:None) ^/> 
    kwargs 
    {} 
    path  
    [] 
    resolved_path 
    [] 
    urlconf 
    'root.urls' 
    view  
    'views_captcha' 
난 그냥 장고의 쿼리 문자열과 URL을 생성 할 경우 내가 쉽게 MVC3.But에서 Url.Action("CaptchaController", "CaptchaView", new { encoded = "encoded"}) 같은 문에서 쿼리 문자열과 URL을 생성 할 수 있습니다 ASP MVC3.I에서 온 때문에 장고가 너무 복잡하다고 생각

코드는 reverse('captcha') + '?encoded=' + encoded이 될 것입니다. 정말 못생긴 것입니다 ....

답변

0

urls 파일에서 def 메소드 자체가 아니라 클래스를 호출하고 있습니다. 프로젝트는 대부분의 파일이 *.py 결말이 있기 때문에, 조금 이상한 것 같다, 그러나 여기에서 이미 사용하고 있습니다 프로젝트에서 예제 :

urls.py 
... 
url(r'^getCustomerData/$', views.getCustomerData), 
... 

및 views.py`에서

,

from app.models import Customer 

def getCustomerData(request): 
//process and return 

그래서 당신을 위해, 나는

url(r'^$', views.captcha.CAPTCHA_HANDLER_DEF , name="views_captcha"), 
url(r'^refresh/$', views.captcha.refresh , name="views_refresh_captcha") 

url(r'^$', views.captcha , name="views_captcha"), 
url(r'^refresh/$', views.refresh , name="views_refresh_captcha") 

에서 URL의 해결을 변경하는 게 좋을 것

및 captcha 내에서 두 함수를 정의하십시오.

+0

보기입니다.captcha는 내 view 함수입니다. root.urls는 루트 프로젝트 – Mithril

+0

Hmm 아래 urls.py입니다. '/ account/signup /'url에서'captcha '라고 부르시겠습니까? 그렇다면 captchahelper에 URL을 추가해야합니다. – Jason

+0

또한'captchahelper'가'settings.py'에 설치된 응용 프로그램으로 정의되어 있습니까? – Jason

0

urls.py 파일의 파일 이름이 urlpatterns이고 철자가 올바른지 확인하십시오.

urlpatterns = [ 
    url(r'^$', views.article_list), 
] 
관련 문제