2014-12-19 38 views
1

我想在我的Django視圖中使用reverse()來避免硬編碼,但得到「」 '()'和關鍵字參數'{}'找不到「。這裏是我的代碼:反向登錄參數'()'和關鍵字參數'{}'找不到

URL配置:

urlpatterns = patterns(
    '', 
    url(r'^accounts/', include('accounts.urls', namespace="accounts")), 
    url(r'^admin/', include(admin.site.urls)), 
) 

urls.py

urlpatterns = patterns(
    '', 
    url(r'^login/$', views.login, name='login'), 
    url(r'^signup/$', views.signup, name='signup'), 
) 

views.py:

def login(request): 
    return render(request, reverse("login")) 


def signup(request): 
    return render(request, reverse("signup")) 

這裏是我的追蹤信息:

環境:

請求方法:GET
請求URL:http://127.0.0.1:8000/accounts/login/

Django的版本:1.7
Python版本:2.7.5
安裝的應用程序:
( 'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
「django.contrib中.messages',
'django.contrib.staticfiles',
'帳戶')
安裝中間件:
( 'django.contrib.sessions.middleware.SessionMiddleware',
「django.middleware.common.CommonMiddleware '
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
' django.contrib.messages .middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')

回溯: 文件 「/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/core/handlers/base.py」 (請求,* callback_args,** callback_kwargs)
登錄的文件「/Users/feizhao/dropbox/nahan/accounts/views.py」 11. return render(request,reverse(「登錄「)) 反向文件」/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/core/urlresolvers.py「 546. return iri_to_uri(resolver._reverse_with_prefix(view,prefix ,* args,** kwargs))
文件「/ User S /飛兆/ .virtualenvs /阿那含/ LIB/python2.7 /站點包/ django的/核心/ urlresolvers.py」在_reverse_with_prefix 463.(lookup_view_s,指定參數時,kwargs,LEN(模式),圖案))

異常類型:NoReverseMatch at/accounts/login/
異常值:未找到參數'()'和關鍵字參數'{}'的'login'反向。0模式嘗試:[]

我已經看到了一些類似的問題在stackoverflow已經,如here,但沒有幫助。

任何人都可以告訴我爲什麼這是錯的?非常感謝!

回答

9

你給的URL命名空間,所以你需要包括在名稱,你扭轉:

def login(request): 
    return render(request, reverse("accounts:login")) 


def signup(request): 
    return render(request, reverse("accounts:signup")) 
+0

謝謝,但我得到「TemplateDoesNotExist在/帳號/登錄/ 」。我的模板是accounts/templates/accounts/ login.html,accounts/templates/accounts/signup.html。 – selfboot 2014-12-19 06:03:24

+2

這是一個單獨的問題,但我認爲dir結構可能應該是'accounts/templates/signup.html' ...請參閱django TEMPLATE_DIRS和TEMPLATE_LOADERS的文檔以及https://docs.djangoproject.com/en /1.7/ref/templates/api/#django.template.loaders.app_directories.Loader – Anentropic 2014-12-19 06:10:25

+0

我將目錄結構更改爲accounts/templates/signup.html,但仍無法正常工作。 – selfboot 2014-12-19 07:16:51

相關問題