2013-09-30 43 views
0

我有一個QR碼,指向我的網站中不存在的URL。我不想爲該QR代碼創建一個頁面,而只是將用戶重定向到主頁。我目前在Django 1.4.5上,我確信必須有一個簡單的解決方案。在Django 1.4.5中重定向url

有一件事我確實發現了這裏面我把我的urls.py文件:

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

然而,這似乎並沒有工作。這是Django 1.5的代碼嗎?無論如何,任何幫助將是偉大的。

謝謝!

+0

爲什麼不使用404? – 2013-09-30 09:19:57

+0

這些QR碼位於人們名片的背面,所以如果出現錯誤404頁面會讓他們感到有些尷尬。這是除非我不完全理解。 – Marnchair

+0

這是一個沒有找到的頁面的正常行爲[你可以看看這個](https://docs.djangoproject.com/en/1.5/topics/http/views/#the-http404-exception)一個嘗試/趕上 – 2013-09-30 09:25:50

回答

1

通過覆蓋get_object函數編寫您自己的404處理函數或更改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 
+0

我應該指出,我是一個Django nubcake,幾個月前甚至沒有聽說過Django。我相信你的解決方案能夠發揮作用,但這一切都在我的頭上。有四張名片有四個不同的QR碼,用於指向卡片持有人的某種生物頁面。有沒有我可以放入urls.py的簡單的sulution? – Marnchair