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
Django URL翻译-更改语言时保持在同一页面上_Django_Internationalization_Django Urls - Fatal编程技术网

Django URL翻译-更改语言时保持在同一页面上

Django URL翻译-更改语言时保持在同一页面上,django,internationalization,django-urls,Django,Internationalization,Django Urls,我还开发了一个Django应用程序,其中包含用于URL的i18n 这看起来真的很好,但是当我改变语言时,我想保持在原来的页面上 最好的方法是什么 基本上,为了获得新的url,我需要在更改语言后对上一页的名称执行反向操作,并执行重定向,但我如何知道上一页的url名称 编辑: 来自学院的解决方案: 使用request.resolver\u match为每种语言计算下一个参数。 对于每种语言:activate(language)+reverse({app\u name}:{url\u name}',a

我还开发了一个Django应用程序,其中包含用于URL的i18n

这看起来真的很好,但是当我改变语言时,我想保持在原来的页面上

最好的方法是什么

基本上,为了获得新的url,我需要在更改语言后对上一页的名称执行
反向操作
,并执行重定向,但我如何知道上一页的url名称

编辑:

来自学院的解决方案:

使用request.resolver\u match为每种语言计算下一个参数。 对于每种语言:
activate(language)+reverse({app\u name}:{url\u name}',args,kwargs)
using request.resolver\u match元素

你认为有更好的主意吗?

有两个选项供你选择:

选项1

如果您使用来自的
表单
,则会将您带回您所在的页面

选项2

更改语言时,您可以使用REFERER头,
HTTP\u REFERER
,并重定向回您的来源地

# Change the language
# ... code ...

# Redirect back to where we came from
redirect_to = request.META.get('HTTP_REFERER', reverse('default-redirect-page'))
return HttpResponseRedirect(redirect_to)

但是随着URL的更改,重定向到HTTP的REFERER将引发404或再次更改您的语言。因为文档更改了选项1的链接。