Asi*_*bel 0 python regex django redirect
我在django 项目的电影应用程序中遇到以下异常:
异常类型:NoReverseMatch at /movie/ 异常值:“movie.views.movie_detail”反转,参数“(u'the_peanuts_movie',)”和关键字参数“{}”未找到。尝试了 0 个模式:[]
以下是 movie.urls.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'),
]
Run Code Online (Sandbox Code Playgroud)
以下是movies.views.py的一些部分:
def movie_detail(request, movie_name):
# code
...
def movie_home(request):
...
return redirect(movie_detail, movie_name)
# movie_name is a string
Run Code Online (Sandbox Code Playgroud)
到目前为止,我无法使这段代码工作。但它有效,如果我更改return 语句并将其放入movie_home 函数:
movie_name += '/'
return redirect(movie_name)
Run Code Online (Sandbox Code Playgroud)
现在在 stackoverflow 中阅读了其他一些此类问题后,我知道该return redirect(movie_name)语句有效,因为它重定向到一个 url:127.0.0.1 :
8000/movie/whatever_is_the_movie_name
但我不明白为什么重定向到movie_detail视图不起作用。
我怎样才能让它工作?
首先,movie_detail应该是一个字符串 ( 'movie_detail') 并在'movie'命名空间下 - 另外,尝试使用 reverse 并将名称作为参数传递:
return redirect(reverse('movie:movie_detail', args=[movie_name]))
Run Code Online (Sandbox Code Playgroud)
此外,您似乎错过了urls.py之前的结尾斜线$:
url(r'^(?P<movie_name>[\w_]+)/$', views.movie_detail, name='movie_detail'),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3172 次 |
| 最近记录: |