未找到带有参数“()”和关键字参数“”的“登录”的反向操作

Posted

技术标签:

【中文标题】未找到带有参数“()”和关键字参数“”的“登录”的反向操作【英文标题】:Reverse for 'login' with arguments '()' and keyword arguments '' not found未找到带有参数“()”和关键字参数“”的“登录”的反向操作 【发布时间】:2015-02-18 01:23:31 【问题描述】:

我想在我的 Django 视图中使用 reverse() 来避免硬编码,但得到“Reverse for 'login' with arguments '()' and keyword arguments '' not found” .这是我的代码:

URLConf:

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 请求网址: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')

追溯: get_response 中的文件“/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/core/handlers/base.py” 111. response = Wrapped_callback(request, *callback_args, **callback_kwargs) 登录文件“/Users/feizhao/dropbox/nahan/accounts/views.py” 11.返回渲染(请求,反向(“登录”)) 反向文件“/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)) _reverse_with_prefix 中的文件“/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/core/urlresolvers.py” 463.(lookup_view_s,args,kwargs,len(模式),模式))

异常类型:NoReverseMatch 位于 /accounts/login/ 异常值:未找到带有参数“()”和关键字参数“”的“登录”的反向。尝试了 0 个模式:[]

我已经在 *** 中看到过一些类似的问题,例如 here,但没有任何帮助。

谁能告诉我为什么错了?非常感谢!

【问题讨论】:

【参考方案1】:

您已为 url 提供了一个命名空间,因此您需要将其包含在您正在反转的名称中:

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


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

【讨论】:

谢谢,但我得到“TemplateDoesNotExist at /accounts/login/”。我的模板是accounts/templates/accounts/login.html,accounts/templates/accounts/signup.html。 这是一个单独的问题,但我认为目录结构可能应该是 accounts/templates/signup.html ...请参阅 django 的文档 TEMPLATE_DIRSTEMPLATE_LOADERS 和 docs.djangoproject.com/en/1.7/ref/templates/api/… 我把目录结构改成accounts/templates/signup.html,还是不行。 得到它!非常感谢,愚蠢的问题!阅读文档并仔细考虑!再次感谢。

以上是关于未找到带有参数“()”和关键字参数“”的“登录”的反向操作的主要内容,如果未能解决你的问题,请参考以下文章

“未找到带有参数 '()' 和关键字参数 '' 的 '' 的反向操作。”

未找到带有参数“(”,)”和关键字参数“”的“比率”的反向

未找到带有参数“()”和关键字参数“”的“password_change_done”的反向

未找到带有参数“()”和关键字参数“”的“send_referral_code”的反向

未找到带有参数“()”和关键字参数“”的“guestbook.posts”的反向操作。尝试了 0 种模式:[]

未找到带有参数“()”和关键字参数“'pk':6”的“post_edit”的反向。尝试了 0 种模式:[]