用于获取参数的django url变量

用于获取参数的django url变量,django,django-urls,Django,Django Urls,我的URL.py文件的一部分如下所示: urlpatterns = patterns('', url(r'^$', DetailHomePublic), url(r'^demo/$', TemplateView.as_view(template_name='public/demo.html')), url(r'^privacy/$', TemplateView.as_view(template_name='public/privacy.html')), url(r

我的URL.py文件的一部分如下所示:

urlpatterns = patterns('',
    url(r'^$', DetailHomePublic),
    url(r'^demo/$', TemplateView.as_view(template_name='public/demo.html')),
    url(r'^privacy/$', TemplateView.as_view(template_name='public/privacy.html')),
    url(r'^terms/$', TemplateView.as_view(template_name='public/terms.html')),
    url(r'^login/$', Login),
    url(r'^logout/$', Logout),
    url(r'^lost_password/$', LostPassword),
    url(r'^register/$', Register),
)
我已经做了一个中间件,它可以捕获名为language的参数是否被传递。它用于更改网站的语言

class SetLanguageMiddleware:
"""
Middleware which changes the language if the GET variable named language has been set with a valid language referenced on the settings.py file
"""
def process_request(self, request):
    from django.utils import translation
    from django.conf import settings
    from django.utils.translation import LANGUAGE_SESSION_KEY



    if 'language' in request.GET:
        language = request.GET['language']
        #check if the language is defined in the settings.LANGUAGES global settings

        if any(language in code for code in settings.LANGUAGES):
            #set the given language in the session and active it for the current page too
            request.session[LANGUAGE_SESSION_KEY] = language
            translation.activate(request.session[LANGUAGE_SESSION_KEY])
现在,对于这个给定的页面,我想添加一个语言前缀来提供一个多语言网站

是否可以对URL文件中的前缀进行分类,并将其添加到GET参数中,以获得如下内容:

urlpatterns = patterns('',
    url(r'^(?P<language>[a-z]{3})$', DetailHomePublic),
    url(r'^(?P<language>[a-z]{3})demo/$', TemplateView.as_view(template_name='public/demo.html')),
)
...
urlpatterns=patterns(“”,
url(r'^(?P[a-z]{3})$,DetailHomePublic),
url(r'^(?P[a-z]{3})demo/$,TemplateView.as_view(template_name='public/demo.html'),
)
...

谢谢

是的,这是可能的。你已经写的东西会有用的。但它们将在您的视图中作为参数提供。但我并不完全理解你不知道或无法理解的东西。问题是,如果我喜欢url上的示例中显示的那样:url(r’^(?P[a-z]{3})$,DetailHomePublic)需要设置DetailHomePublic来检索此参数。或者,我不想让这个变量成为这个视图的参数,而只是让我的中间件捕捉。更清楚吗?我已经深入研究了我的问题,并通过在nginx配置上进行重写找到了解决方法,但是这样做看起来有点脏,在url文件上进行是否更好?如果是这样的话,django方式的等价物是什么来替换这一行rewrite“^/([a-z]{2})(/.*)$”/$2?语言=1;