python - 在 View 中找不到 Django Reverse,但 URL 有效

标签 python python-3.x django django-views django-apps

我有一个包含一些应用程序的项目,例如帐户Webadmin

登录后,我将用户重定向到Webadmin的 View 。 问题是我可以通过浏览器查看 Webadmin 页面!这意味着链接有效。

但是每当我尝试重定向查看时,它都会出现此错误。这是回溯

Environment:


Request Method: POST
Request URL: http://localhost:8000/account/login/

Django Version: 1.7
Python Version: 3.4.0
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'debug_toolbar.apps.DebugToolbarConfig',
 'bootstrap3',
 'easy_pjax',
 'website',
 'account',
 'webadmin')
Installed Middleware:
('debug_toolbar.middleware.DebugToolbarMiddleware',
 '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')


Traceback:
File "/home/nihan/venv/venv/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/nihan/workspace/hubx/account/views.py" in sign_in
  57.                     return redirect(webadmin_home)
File "/home/nihan/venv/venv/lib/python3.4/site-packages/django/shortcuts.py" in redirect
  74.     return redirect_class(resolve_url(to, *args, **kwargs))
File "/home/nihan/venv/venv/lib/python3.4/site-packages/django/shortcuts.py" in resolve_url
  158.         return urlresolvers.reverse(to, args=args, kwargs=kwargs)
File "/home/nihan/venv/venv/lib/python3.4/site-packages/django/core/urlresolvers.py" in reverse
  546.     return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "/home/nihan/venv/venv/lib/python3.4/site-packages/django/core/urlresolvers.py" in _reverse_with_prefix
  463.                              (lookup_view_s, args, kwargs, len(patterns), patterns))

Exception Type: NoReverseMatch at /account/login/
Exception Value: Reverse for 'webadmin.views.list_sites' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

这是我来自网站应用程序(根应用程序)的 urls.py 代码

from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf.urls.static import static
from django.conf import settings

urlpatterns = patterns(
'',
url(r'^$', 'website.views.home', name='home'),
url(r'^account/', include('account.urls', namespace='account')),
url(r'^admin/', include('webadmin.urls', namespace='webadmin')),
url(r'^admin-panel/', include(admin.site.urls)),
)
if settings.DEBUG:
    import debug_toolbar
    urlpatterns += patterns('',
    url(r'^__debug__/', include(debug_toolbar.urls)),
    ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

来自 webadmin 应用程序的 url.py 代码

from django.conf.urls import patterns, url
urlpatterns = patterns('',
    url(r'create/$', 'webadmin.views.create', name='create'),
    url(r'list/$', 'webadmin.views.list_sites', name='list_sites'),
)

来自帐户应用程序的url.py代码

from django.conf.urls import patterns, url


urlpatterns = patterns( '',
    url(r'^view/(?P<id>\d+)/$', 'account.views.view', name='profile'),
    url(r'^login/$', 'account.views.sign_in', name='sign_in'),
    url(r'^register/$', 'account.views.sign_up', name='sign_up'),
    url(r'^logout/$', 'account.views.signout', name='logout'),
    url(r'^edit/$', 'account.views.edit', name='edit'),
    url(r'^activate/(?P<token>\d{4})/$', 'account.views.activate', name='activate'),
)

我用这个小代码重定向到list_sites(与其他应用程序的其他 View 一起使用)

from django.shortcuts import redirect
from webadmin.views import list_sites as webadmin_home

def someview(request):
    return redirect(webadmin_home)

我错过了什么吗?为什么会出现这个错误?如何修复它? 提前致谢

最佳答案

您不会重定向到 View 方法,而是重定向到 URL。在 urls.py 中,您已经为该 URL 指定了一个名称,因此您需要使用该名称。

return redirect('webadmin:create')

关于python - 在 View 中找不到 Django Reverse,但 URL 有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26785347/

相关文章:

python - 无效选择器错误 : Webscraping different kinds of text from multiple spans using xpath and Selenium

Python-如何测试用户输入是否是十进制数

python - Django channel 中的消费者

python - 如何找到交替重复的数字对?

python - 包含来自多个模型的字段的表单

python - 使用 Python-Django 将 CSV 文件导入 PostgreSQL 数据库

python - 归一化直方图

python - 我没有成功捕获来自 SQLAlchemy 的操作错误

python - 带有或在 Python 中的简短 if 语句

python - 如何将从用户获取的多个值分配给存储在Python字典中的单个键?