您好我在我的应用中使用多种语言,可以通过www.asd.com/reg/?lang=es
这样的网址访问
有什么方法可以从我的网址中删除这个“?”,它变得像www.asd.com/reg/es
,而且我的多语言功能也正常工作。
谢谢
答案 0 :(得分:2)
当您使用?lang=es
访问网址时,您会在视图中获得名为lang
的参数,其值为es
。这是通用的HTTP URL方案。
使用django,可以使用适当的url模式完成类似的事情。例如:
url(r'^reg/(?P<lang>[\w]+)$', 'your_app.views.view_func',),
在视野中
def view_func(request, lang=None):
...
# lang will have value passed.
# do your stuff
因此,当您访问www.asd.com/reg/es
时,参数lang
将在您的视图中显示值es
。
答案 1 :(得分:2)
Django 1.4对此类网址提供原生支持 - i18n_patterns
。据我所知,有一个名为django-i18nurls
的应用程序,但它被包含在django core
此外,您可以使用django-localeurl
申请(available at BitBucket)。它有一个中间件,可以修复request.path
和django的reverse
函数来实现区域设置URL。也许有这个应用程序的替代品
但是,此解决方案将为您提供格式为www.asd.com/es/reg/