Django 1.3 में कक्षा आधारित विचारों के साथ स्थितियों पर पुनर्निर्देशन कैसे करें?




redirect class-based-views (2)

Django doc अनुसार:

url.py में

from django.views.generic.base import RedirectView

urlpatterns = patterns('',
     ...
    url(r'^go-to-django/$', RedirectView.as_view(url='http://djangoproject.com'), name='go-to-django'),
..
)

मैं एक सूची दृश्य का उपयोग कर रहा हूं जो टैग के अनुसार वीडियो सूचीबद्ध करता है। फ़िल्टरिंग get_queryset () में होती है। यदि टैग में कोई वीडियो नहीं है तो मैं उपयोगकर्ता को किसी अन्य पृष्ठ पर रीडायरेक्ट करना चाहता हूं।

एक समारोह के साथ, यह आसान होगा। क्वेरी, क्वेरीसेट की जांच करें, रीडायरेक्ट करें। कक्षा के साथ, मैं ऐसा करने में विफल रहता हूं:

class VideosView(generic.ListView):

    def get_queryset(self):
        """
            This work.
        """

        tag = self.kwargs.get('tag', None)

        self.videos = Video.on_site.all()

        if tag:
            self.videos = Video.tagged.with_all(tag, self.videos)

        return self.videos

    def get(self, request, *args, **kwargs):
        """
        This doesn't work because self.videos doesn't exist yet.
        """
        if not self.videos:
            return redirect('other_page')

        return super(Videos, self).get(request, *args, **kwargs)

मिल गया:

def render_to_response(self, context):

    if not self.videos:
        return redirect('other_page')

    return super(VideosView, self).render_to_response(context)

इसे सभी HTTP विधियों के लिए बुलाया जाता है





class-based-views