首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >姜戈shortcuts.redirect NoReverseMatch

姜戈shortcuts.redirect NoReverseMatch
EN

Stack Overflow用户
提问于 2017-04-23 11:15:20
回答 1查看 93关注 0票数 0

我从下面的视图中获得了NoReverseMatch

代码语言:javascript
复制
from django.shortcuts import render, redirect

def new_room(request):
    label="test"
    return redirect(chat_room, label=label)
    # this didn't work either:
    # return redirect('chat_room', label=label)

def chat_room(request, label):
    ...

我的urls.py如下所示:

代码语言:javascript
复制
from django.conf.urls import url, include

from messaging import views

app_name="messaging"
urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^new/$', views.new_room, name='new_room'),
    url(r'^(?P<label>[\w-]{,50})/', views.chat_room, name='chat_room'),
]

直接进入messaging/test/将正确加载页面。只有重定向才是问题的根源。

完全堆栈跟踪:

代码语言:javascript
复制
Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/messages/new/

Django Version: 1.10.5
Python Version: 3.5.2
Installed Applications:
['messaging',
 'dal',
 'dal_select2',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',,
 'channels']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "g:\Python\lib\site-packages\django\core\handlers\exception.py" in inner
  39.             response = get_response(request)

File "g:\Python\lib\site-packages\django\core\handlers\base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "g:\Python\lib\site-packages\channels\handler.py" in process_exception_by_middleware
  240.             return super(AsgiHandler, self).process_exception_by_middleware(exception, request)

File "g:\Python\lib\site-packages\django\core\handlers\base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "g:\Git\Jam\messaging\views.py" in new_room
  26.     return redirect('chat_room', label=label)

File "g:\Python\lib\site-packages\django\shortcuts.py" in redirect
  56.     return redirect_class(resolve_url(to, *args, **kwargs))

File "g:\Python\lib\site-packages\django\shortcuts.py" in resolve_url
  147.         return reverse(to, args=args, kwargs=kwargs)

File "g:\Python\lib\site-packages\django\urls\base.py" in reverse
  91.     return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))

File "g:\Python\lib\site-packages\django\urls\resolvers.py" in _reverse_with_prefix
  392.             (lookup_view_s, args, kwargs, len(patterns), patterns)

Exception Type: NoReverseMatch at /messages/new/
Exception Value: Reverse for 'chat_room' with arguments '()' and keyword arguments '{'label': 'test'}' not found. 0 pattern(s) tried: []
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-23 11:19:11

这是因为您使用namespacing作为chat_room应用程序。

改为:

代码语言:javascript
复制
return redirect('messaging:chat_room', label=label)

检查namespacing这里也是

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43570432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档