【问题标题】:Redirect url in Django 1.4.5Django 1.4.5 中的重定向网址
【发布时间】:2013-10-06 02:21:46
【问题描述】:

我有一个二维码,它指向我网站中不存在的 URL。我不想只为那个二维码创建一个页面,而只是将用户重定向到主页。我目前使用的是 Django 1.4.5,我确信必须有一个简单的解决方案。

我发现的一件事是我将其放入我的 urls.py 文件中:

from django.views.generic import RedirectView
urlpatterns = patterns('',
    (r'^bad-QR-url/not-here$', RedirectView.as_view(url='/')),

但是这似乎不起作用。这是 Django 1.5 的代码吗?无论如何,任何帮助都会很棒。

谢谢!

【问题讨论】:

  • 你为什么不使用 404 ?
  • 这些二维码在人们的名片背面,如果他们弹出错误404页面,会有点尴尬。除非我没有完全理解。
  • 对于使用 try/catch 的未找到 you can have a look at this 的页面是正常行为
  • 谢谢,我去看看。

标签: django url redirect qr-code


【解决方案1】:

编写您自己的 404 处理程序或通过覆盖 get_object 函数来更改 QR 视图行为。

class QRView(DetailView):
    def get_object(self, queryset=None):
        """
        Returns the object the view is displaying.

        By default this requires `self.queryset` and a `pk` or `slug` argument
        in the URLconf, but subclasses can override this to return any object.
        """
        # Use a custom queryset if provided; this is required for subclasses
        # like DateDetailView
        if queryset is None:
            queryset = self.get_queryset()

        # Next, try looking up by primary key.
        pk = self.kwargs.get(self.pk_url_kwarg, None)
        slug = self.kwargs.get(self.slug_url_kwarg, None)
        if pk is not None:
            queryset = queryset.filter(pk=pk)

        # Next, try looking up by slug.
        elif slug is not None:
            slug_field = self.get_slug_field()
            queryset = queryset.filter(**{slug_field: slug})

        # If none of those are defined, it's an error.
        else:
            raise AttributeError(u"Generic detail view %s must be called with "
                                 u"either an object pk or a slug."
                                 % self.__class__.__name__)

        try:
            obj = queryset.get()
        except ObjectDoesNotExist:
            # REDIRECT GOES HERE.
        return obj

【讨论】:

  • 我可能应该指出,我是一个 Django 小蛋糕,几个月前甚至没有听说过 Django。我确定您的解决方案有效,但它就在我的脑海中。有四张名片,上面有四个不同的二维码,用来指向关于持卡人的某种生物页面。有没有我可以放入 urls.py 的简单解决方案?
猜你喜欢
  • 2017-10-21
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
  • 2014-03-20
  • 2013-12-25
  • 2019-04-08
  • 2018-01-28
  • 1970-01-01
相关资源
最近更新 更多