网址中的问号问题

时间:2012-10-25 05:13:21

标签: django url django-urls

您好我在我的应用中使用多种语言,可以通过www.asd.com/reg/?lang=es这样的网址访问 有什么方法可以从我的网址中删除这个“?”,它变得像www.asd.com/reg/es,而且我的多语言功能也正常工作。

谢谢

2 个答案:

答案 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/

的网址