Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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重定向上的NoReverseMatch错误_Python_Regex_Django_Redirect - Fatal编程技术网

Python Django重定向上的NoReverseMatch错误

Python Django重定向上的NoReverseMatch错误,python,regex,django,redirect,Python,Regex,Django,Redirect,我在django项目的电影应用程序中遇到以下异常: 异常类型:NoReverseMatch at/movie/ 异常值:找不到参数为“{}”和关键字参数为“{}”的“movie.views.movie_detail”的反转。已尝试0个模式:[] 以下是movie.url.py的url模式: from django.conf.urls import url from . import views urlpatterns = [ url(r'^(?P<movie_name>[\

我在django项目的电影应用程序中遇到以下异常:

异常类型:NoReverseMatch at/movie/ 异常值:找不到参数为“{}”和关键字参数为“{}”的“movie.views.movie_detail”的反转。已尝试0个模式:[]

以下是movie.url.py的url模式:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^(?P<movie_name>[\w_]+)$', views.movie_detail, name='movie_detail'),
    url(r'^', views.movie_home, name='movie_home'),
]
到目前为止,我无法使此代码正常工作。但如果我更改return语句并将其放入movie\u home函数,它就可以工作了:

    movie_name += '/'
    return redirect(movie_name)
现在,在阅读了stackoverflow中的其他一些此类问题后,我知道
return redirect(movie_name)
语句可以工作,因为它重定向到url: 127.0.0.1:8000/电影/无论电影名是什么

但我不明白为什么重定向到电影细节视图不起作用


如何使其工作?

首先,
movie\u detail
应该是一个字符串(
'movie\u detail'
),并在
'movie'
命名空间下-另外,尝试使用reverse并将名称作为参数传入:

return redirect(reverse('movie:movie_detail', args=[movie_name]))
另外,在
$
之前的
url.py
中,您似乎遗漏了结尾斜杠:

url(r'^(?P<movie_name>[\w_]+)/$', views.movie_detail, name='movie_detail'),
url(r'^(?P[\w\u]+)/$,views.movie\u detail,name='movie\u detail'),

首先,
movie\u detail
应该是一个字符串(
'movie\u detail'
),并且在
'movie'
命名空间下-另外,尝试使用reverse并将名称作为参数传入:

return redirect(reverse('movie:movie_detail', args=[movie_name]))
另外,在
$
之前的
url.py
中,您似乎遗漏了结尾斜杠:

url(r'^(?P<movie_name>[\w_]+)/$', views.movie_detail, name='movie_detail'),
url(r'^(?P[\w\u]+)/$,views.movie\u detail,name='movie\u detail'),
试试这个:

movie.url.py

from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^(?P<movie_name>[\w_]+)$', views.movie_detail, name='movie_detail'),
url(r'^', views.movie_home, name='movie_home'),
]
试试这个:

movie.url.py

from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^(?P<movie_name>[\w_]+)$', views.movie_detail, name='movie_detail'),
url(r'^', views.movie_home, name='movie_home'),
]

它不起作用。以下是异常:异常类型:NoReverseMatch at/movie/exception Value:Reverse for'movie_detail'与参数(u'the_peanuts_movie',)和关键字参数{}未找到。尝试了0个模式:[]更新了我的答案,添加第二部分以查看现在是否有效当我使用“movie:movie\u detail”时,您的解决方案有效…这是因为命名空间问题吗?太好了!是的,名称空间允许您在不同的应用程序下使用相似的名称,以避免冲突。很高兴它成功了!谢谢你的帮助。我被这个问题困扰了很长时间,似乎没有其他答案提到这个名称空间问题!它不起作用。以下是异常:异常类型:NoReverseMatch at/movie/exception Value:Reverse for'movie_detail'与参数(u'the_peanuts_movie',)和关键字参数{}未找到。尝试了0个模式:[]更新了我的答案,添加第二部分以查看现在是否有效当我使用“movie:movie\u detail”时,您的解决方案有效…这是因为命名空间问题吗?太好了!是的,名称空间允许您在不同的应用程序下使用相似的名称,以避免冲突。很高兴它成功了!谢谢你的帮助。我被这个问题困扰了很长时间,似乎没有其他答案提到这个名称空间问题!