我在 URL 和视图之间的交互方面遇到了一些问题。在我的项目中,我有重定向和双重重定向,它们工作正常,但是当我尝试恢复正则表达式捕获的参数时,目标视图抱怨它没有收到任何参数。这是我的实现:
项目/urls.py:
lang_re = r'(ca|en|es|fr|ge)'
urlpatterns = patterns('',
url(r'^$', RedirectView.as_view(url='/en/home/')),
url(r'^'+lang_re+'/home/', include('components.home.urls', namespace='components.home')),
...
)
组件/主页/urls.py:
urlpatterns = patterns('',
url(r'^$', RedirectView.as_view(url='cover')),
url(r'^cover$', views.cover, name='home_cover'),
...
)
组件/主页/views.py
def cover(request, lang_code):
...
例如,这里发生的情况是,当一个人进入根目录时,一个人被重定向到“/en/home”。这匹配第二个正则表达式(它应该捕获“en”部分作为参数),之后用户通过相对重定向再次重定向到“/en/home/cover”。最后一个 URL 最终找到了一个永久视图,“components.home.views.cover”,并运行它的功能。问题是重定向后捕获的参数(“en”)似乎丢失了,Django 给了我以下错误消息:
Request Method: GET
Request URL: http://localhost:8000/en/home/cover
Django Version: 1.5.2
Exception Type: TypeError
Exception Value: cover() missing 1 required positional argument: 'lang_code'
关于如何组合重定向和捕获的参数的任何线索?