Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django重定向错误。似乎什么都不管用_Python_Django - Fatal编程技术网

Python django重定向错误。似乎什么都不管用

Python django重定向错误。似乎什么都不管用,python,django,Python,Django,我知道有很多关于django重定向的帖子。然而,我没有发现任何类似我的问题。我不知道发生了什么,但我读了很多书,仍然没有找到任何关于它的信息。 所以我发布了我的代码。 My project URL.py: from django.conf.urls import url, include urlpatterns = [ url(r'^backbone', include('backbone.urls', namespace='backbone')), ] 我的应用程序URL.py fr

我知道有很多关于django重定向的帖子。然而,我没有发现任何类似我的问题。我不知道发生了什么,但我读了很多书,仍然没有找到任何关于它的信息。

所以我发布了我的代码。

My project URL.py:

from django.conf.urls import url, include
urlpatterns = [
    url(r'^backbone', include('backbone.urls', namespace='backbone')),
]
我的应用程序URL.py

from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^/shell$', views.shell, name='shell'),
    url(r'^/login$', views.login, name='login'),
]
我的应用程序views.py

def shell(request, app='cashier'):
    if 'user' not in request.session:
        response = redirect('backbone:login', app=app)
    else:
        response = render(request, 'template.html')
    return response

def login(request, app):
    context = {
        'app': app,
    }
    response = render(request, 'backbone/login.html', context)
    return response
控制台上出现的错误:

django.urls.exceptions.NoReverseMatch: Reverse for 'login' with arguments '()' and keyword arguments '{'app': 'app'}' not found. 1 pattern(s) tried: ['backbone/login$']
浏览器上的错误:

NoReverseMatch at /backbone/shell
Reverse for 'login' with arguments '()' and keyword arguments '{'app': 'app'}' not found. 1 pattern(s) tried: ['backbone/login$']
Request Method: GET
Request URL:    http://192.168.1.79/backbone/shell
Django Version: 1.10.3
Exception Type: NoReverseMatch
Exception Value:    
Reverse for 'login' with arguments '()' and keyword arguments '{'app': 'app'}' not found. 1 pattern(s) tried: ['backbone/login$']
Exception Location: /usr/local/lib/python3.5/dist-packages/django/urls/resolvers.py in _reverse_with_prefix, line 392
Python Executable:  /usr/bin/python3
Python Version: 3.5.2
Python Path:    
['/home/ipi/workspace/RamoSP',
 '/usr/lib/python35.zip',
 '/usr/lib/python3.5',
 '/usr/lib/python3.5/plat-x86_64-linux-gnu',
 '/usr/lib/python3.5/lib-dynload',
 '/usr/local/lib/python3.5/dist-packages',
 '/usr/lib/python3/dist-packages']
Server time:    Thu, 24 Nov 2016 19:56:47 +0000

我不明白。我正在发送所需的args,对吗?我被卡住了一段时间。

不,您正在尝试访问此URL:

url(r'^/login$', views.login, name='login')
使用它不期望的参数,因为它不期望任何参数

看一看,特别是向视图发送参数主题。它将帮助您理解为什么不能在此URL中向视图发送参数

顺便说一下,您可能希望将请求中的查询参数发送到此URL。在这种情况下,不是:

redirect('backbone:login', app=app)
您必须执行以下操作:

url = '{}?app={}'.format(reverse('backbone:login'), '?item=4')
redirect(url)

不,您正在尝试访问此URL:

url(r'^/login$', views.login, name='login')
使用它不期望的参数,因为它不期望任何参数

看一看,特别是向视图发送参数主题。它将帮助您理解为什么不能在此URL中向视图发送参数

顺便说一下,您可能希望将请求中的查询参数发送到此URL。在这种情况下,不是:

redirect('backbone:login', app=app)
您必须执行以下操作:

url = '{}?app={}'.format(reverse('backbone:login'), '?item=4')
redirect(url)
你想要什么

/backbone/login?app=cashier
解决方案:

解决方案:

在路由声明中添加参数“app”:

url(r'^login/(?P<app>)$', views.login, name='login'),
url(r'^login/(?P)$”,views.login,name='login'),
你想要什么

/backbone/login?app=cashier
解决方案:

解决方案:

在路由声明中添加参数“app”:

url(r'^login/(?P<app>)$', views.login, name='login'),
url(r'^login/(?P)$”,views.login,name='login'),

我想查看你发的帖子,但我想这不是帖子。哎呀,我的错。修复了链接。我想查看你发的帖子,但我想这不是帖子。哎呀,我的错。修复了链接。