我试图在方法结束时返回一个网址:
return reverse('list-remote-networks', kwargs={'datacenter_id': datacenter_id})`
在我的urls.py中,这些行与这个网址有关:
DATACENTER = r'^(?P<datacenter_id>[^/]+)/%s$'
urlpatterns = patterns('',
...
url(DATACENTER % 'list-remote-networks', views.NetworkView.as_view(), name='list-remote-networks'),
我错过了什么吗?我的其他网址效果很好。
编辑:这是urls.py文件。
`DATACENTER = r'^(?P<datacenter_id>[^/]+)/%s$'
NETWORK = r'^(?P<remote_network_id>[^/]+)/%s$'
urlpatterns = patterns('',
url(r'^$', views.IndexView.as_view(), name='index'),
url(DATACENTER % 'remotelogin', views.remotelogin, name='remotelogin'),
url(DATACENTER % 'list-remote-networks', views.NetworkView.as_view(), name='list-remote-networks'),
url(r'^(?P<datacenter_id>[^/]+)/(?P<remote_tenant_id>[^/]+)/(?P<remote_network_id>[^/]+)/%s$' % 'connectnetworks', views.ConnectNetworkView.as_view(), name='connectnetworks'),
)`
答案 0 :(得分:0)
以下是测试正则表达式的方法:
>>> import re
>>> match_string = re.match(r'^(?P<datacenter_id>[^/]+)/%s$' % 'list-remote-networks', 'abc/list-remote-networks')
>>> match_string.groupdict()
{'datacenter_id': 'abc'}
>>> match_nums = re.match(r'^(?P<datacenter_id>[^/]+)/%s$' % 'list-remote-networks', '123/list-remote-networks')
>>> match_nums.groupdict()
{'datacenter_id': '123'}
>>> match_special_chars = re.match(r'^(?P<datacenter_id>[^/]+)/%s$' % 'list-remote-networks', '123-abc?_+@#/list-remote-networks')
>>> match_special_chars.groupdict()
{'datacenter_id': '123-abc?_+@#'}
我不认为这里的问题是你的正则表达式。我怀疑是发生了以下事情之一:
reverse('namespace-name:list-remote-networks', kwargs={'datacenter_id': datacenter_id})
答案 1 :(得分:0)
我找到了解决方案。
return HttpResponseRedirect(reverse('horizon:project:remote_data_centers:list-remote-networks',
kwargs={'datacenter_id': datacenter_id}))
但现在我还有另外一个问题。在返回指令之前,我在会话中保存变量:
request.session['remote_dc_id'] = datacenter_id
在我的重定向之后,在我的views.NetworkView.as_view()中我试图在之前保存我的值:
class NetworkView(tables.DataTableView):
table_class = NetworksDCTable
template_name = 'project/remote_data_centers/networks.html'
def get_data(self):
remote_dc_id = self.request.session['remote_dc_id']
但我无法获得我的价值。返回此错误:
Exception Type: KeyError
Exception Value:
'remote_dc_id'