2014-12-19 65 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

相关问题