Skip to main content
 首页 » 编程设计

python之使用正则表达式在 Django 中动态重定向页面

2024年08月29日33Leo_wl

我对 Django 中的 url.py 有疑问。

在我的应用程序中,我有很多网址,例如:

aaa-2011-bbb 
aaa-2011 

我想将这些网址重定向到没有年份的新网址。所以我需要从网址中删除年份。可能吗?

我只有这样的静态映射:

(r'^aaa-\d{4}-bbb/$', redirect_to, {'url': '/aaa-bbb/'}), 

但我不喜欢为每个带有年份的网址都写这条规则。

请您参考如下方法:

我会继承RedirectView并使用它来支持动态重定向

urls.py 类似

(r'^(?P<aaa>\w+)-\d{4}-(?P<bbb>\w+)/$', MyRedirectView.as_view()), 

并且在 views.py

from django.views.generic.base import RedirectView 
 
class MyRedirectView(RedirectView): 
    permanent = False 
    query_string = True 
 
    def get_redirect_url(self, aaa, bbb): 
        return '%s-%s' % (aaa, bbb) 

这从 urls.py(假设是字符串并从您描述的 url 重定向)并返回由 '%s-%s' % (aaa, bbb)

组成的重定向 url