मैंने आज पढ़ा कि Django 1.3 अल्फा शिपिंग है, और सबसे अधिक टाल दिया गया नया फीचर क्लास-आधारित विचारों का परिचय है ।
मैंने संबंधित दस्तावेज़ीकरण पढ़ा है , लेकिन मुझे उनका उपयोग करके प्राप्त होने वाले बड़े लाभ ™ को देखना मुश्किल लगता है , इसलिए मैं उन्हें समझने में कुछ मदद के लिए यहां पूछ रहा हूं।
आइए प्रलेखन से एक उन्नत उदाहरण लेते हैं ।
urls.py
from books.views import PublisherBookListView
urlpatterns = patterns('',
(r'^books/(\w+)/$', PublisherBookListView.as_view()),
)
views.py
from django.shortcuts import get_object_or_404
from django.views.generic import ListView
from books.models import Book, Publisher
class PublisherBookListView(ListView):
context_object_name = "book_list"
template_name = "books/books_by_publisher.html",
def get_queryset(self):
self.publisher = get_object_or_404(Publisher, name__iexact=self.args[0])
return Book.objects.filter(publisher=self.publisher)
def get_context_data(self, **kwargs):
# Call the base implementation first to get a context
context = super(PublisherBookListView, self).get_context_data(**kwargs)
# Add in the publisher
context['publisher'] = self.publisher
return context
और अब इसकी तुलना एक "सादे-पुराने-विचार" समाधान से करते हैं, इस प्रश्न के लिए 5 मिनट में खुद से बनाया गया है (मैं इसमें किसी भी त्रुटि के लिए माफी चाहता हूं)।
urls.py
urlpatterns = patterns('books.views',
url(r'^books/(\w+)/$', 'publisher_books_list', name="publisher_books_list"),
)
views.py
from django.shortcuts import get_object_or_404
from books.models import Book, Publisher
def publisher_books_list(request, publisher_name):
publisher = get_object_or_404(Publisher, name__iexact=publisher_name)
book_list = Book.objects.filter(publisher=publisher)
return render_to_response('books/books_by_publisher.html', {
"book_list": book_list,
"publisher": publisher,
}, context_instance=RequestContext(request))
मेरे लिए दूसरा संस्करण दिखता है:
- कार्यक्षमता में बराबर
- बहुत अधिक पठनीय (
self.args[0]
? भयानक!) - छोटा
- डीआरवाई-अनुपालन कम नहीं
क्या कोई बड़ी चीज मुझे याद आ रही है? मुझे उनका उपयोग क्यों करना चाहिए? क्या वे दस्तावेज हैं? यदि ऐसा है तो आदर्श उपयोग का मामला क्या होगा? क्या मिक्सकिन उपयोगी हैं?
जो भी योगदान देता है, उसके लिए अग्रिम धन्यवाद!
उन लोगों के लिए पीएस जो आश्चर्यचकित कर सकते हैं, मैं कभी भी सामान्य विचारों से रोमांचित नहीं था: जैसे ही मुझे कुछ उन्नत कार्यक्षमता की आवश्यकता थी, वे नियमित विचारों से कम नहीं हो गए।