如果 url 包含特定字符,则在 Django 中使用不同的视图

Use different view in Django if the url contains specific character

我有这样的看法:

def url_redirect(request,id):
        url = get_object_or_404(Url,short_id=id)
        return HttpResponseRedirect(url.httpurl)

和这些 url:

urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(ur'^(?P<id>.*)$', views.url_redirect),

]

基本上它所做的是从 http://127.0.0.1:8000/XYZ 重定向到另一个站点

现在,如果 url 通过添加“!”略有不同,我希望有可能使用不同的视图。字符,即:

http://127.0.0.1:8000/!XYZ

所以每当我使用这个 url 它会做一些除了重定向之外的事情。

知道我该怎么做吗? 任何帮助表示赞赏。

如果要在同一个视图中处理它,请保持 urls 不变并更改视图:

def url_redirect(request,id):
    if id.startswith('!'):
        id = id[1:]
        # do whatever you want with id
    else:
        url = get_object_or_404(Url,short_id=id)
        return HttpResponseRedirect(url.httpurl)