0

モデルフォーム クラスで URL を取得したい。The included urlconf manager.urls does not have any patterns in it で見ました 。しかし、reverse_lazy関数は私の場合は機能しません。

私の場合:

captchahelperrootのアプリです。

ルート urlpatterns (ルート プロジェクトの下の urls.py):

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

captcha urlpatterns (captchahelper プロジェクトの urls.py):

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


captchahelper プロジェクトの view.py

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

得る:

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):
        ....


エラーが発生します:
/account/signup/ は現在の URL です (root.urls にも含まれます)。訪問者がこのページを表示すると、上記のクラスが対応するビュー関数で初期化されます。

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'

私はASP MVC3から来ているので、djangoはとても複雑だと感じています Url.Action("CaptchaController", "CaptchaView", new { encoded = "encoded"})。MVC3のようなステートメントからクエリ文字列を含むURLを簡単に生成できます.しかし、djangoでクエリ文字列を含むURLを生成したい場合、コードは次のようになりますreverse('captcha') + '?encoded=' + encoded。本当に醜い....

4

2 に答える 2

0

URLファイルのdefメソッド自体ではなく、クラスを呼び出しています。ほとんどのファイルには末尾があるため、あなたのプロジェクトは少し奇妙に思えますが、*.py私がすでに使用しているプロジェクトの例を次に示します。

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

そして`views.pyでは、

from app.models import Customer

def getCustomerData(request):
//process and return

したがって、URLリゾルバーを次から変更することをお勧めします

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

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

キャプチャ内でこれら 2 つの関数を定義します。

于 2013-07-17T09:04:20.407 に答える
0

urlpatternsurls.py ファイルが含まれていて、スペルが正しいことを確認してください。

urlpatterns = [
    url(r'^$', views.article_list),
]
于 2016-01-03T12:09:10.807 に答える