Tag archive: Django
-
Dropping to ipython from Django
Today I wanted to debug some of our unit tests, so I wanted to drop to a shell from inside a test case. Here's how that can be done: import IPython IPython.embed() In previous versions this used to be: from IPython.Shell import IPShellEmbed ipython = IPShellEmbed() ipython() The first two lines go somewhere in your module and the latter wherever you want to hook up with the shell (tests, models, views). This can serve as a more rich alternative to `ipdb.set_trace()`.

-
jespern / django-piston / wiki / Home — bitbucket.org
Giving a good look at django-piston. Looks hawt!
-
Abstraction layers: One, two, many

(cc) by piet_musterdIt’s becoming pretty clear to me that when in doubt whether to write an abstraction, the rule is clear: “one, two, many”.
Write something 3 times and you’re breaking the DRY principle. The cost of changing a bit in one place and needing to update the other places too is high.
Abstract something you only use once (in case you want to re-use in the future), and you forgot the “two” in the above rule. The cost for later refactoring is probably not worth the extra load you’ll carry until that day comes. If it comes.
“One, two, many” is usually better than “one, two, three” and “one, many”.
-
Παρουσιάζοντας το Django στο Patras LUG
Off for Patras LUG. Σήμερα θα παρουσιάσω το Django στους διψασμένους για γνώση θαμώνες του τοπικού μας hack-group. Πλάκα θα ‘χει, αν εξαιρέσουμε ένα μικρό πονοκέφαλο, ο οποίος όμως είμαι σίγουρος θα περάσει στα πρώτα 5 λεπτά από τον ενθουσιασμό. =)
-
Django’s generic relations
This is really hot stuff.
# (Snip model creation) >>> tiger, bear = Animal(common_name="tiger"), Animal(common_name="bear"), >>> tiger.comparisons.create(other_obj=bear, comparative="cooler") <Comparison: tiger is cooler than bear>
-
RSS, Πλανήτες και Django
Δυστυχώς είναι συχνό φαινόμενο να εμφανίζονται διπλές μερικές καταχωρήσεις στους Πλανήτες, όπως συμβαίνει για παράδειγμα στο planet.ellak.gr με το feed (ροή) του django.gr weblog.
Αυτό από ότι κατάλαβα συμβαίνει με τις ροές RSS που δεν έχουν πεδία
pubDate, τις οποίες το λογισμικό planet δε μεταχειρίζεται σωστά. Αν κάτι αλλάξει σε μία καταχώρηση μιας τέτοιας ροής, τότε το planet υποθέτει ότι είναι νέα καταχώρηση, την αναρτά, και δε σβήνει την παλιά γιατί είναι ήδη δημοσιευμένη. Αυτό που θα έπρεπε να κάνει όμως είναι να συγκρίνει κάπως τις δύο καταχωρήσεις αν δεν υπάρχει το pubDate, πχ. ελέγχοντας το<link>tag τους πριν αποφανθεί ότι είναι διαφορετικές καταχωρήσεις. Μια και είναι δημοφιλές λογισμικό, θέλω να πιστεύω ότι η λειτουργικότητα αυτή είναι σχεδιαστική απόφαση κι όχι κάποιο σφάλμα (it’s a feature, not a bug).Από την πλευρά μας αυτό που μπορούμε να κάνουμε είναι απλά να προσθέσουμε το πεδίο
pubDateστα feed που δεν το έχουν. Στα RSS 2.0 και Atom τουλάχιστον, γιατί αν διαθέτουμε μόνο ένα παλαιολιθικό RSS 0.92, δεν έχουμε τέτοια επιλογή χωρίς να κάνουμε τη σύνταξη της ροής μη-έγκυρη ως προς το πρότυπο.Το django.gr είναι γραμμένο σε Django (προφανώς), και ο κώδικας που παράγει τη ροή RSS είναι ο παρακάτω:
class WeblogEntryFeed(Feed): title = "The Greek Django User Group weblog" link = "http://www.django.gr/weblog/" description = "Latest news about Django, the Python Web framework," + \ " from the Greek Django User Group." def items(self): return Entry.objects.filter(pub_date__lte=datetime.datetime.now())[:10]Για να μορφοποιήσουμε τη ροή ώστε να περιέχει για κάθε άρθρο και την ημερομηνία δημοσίευσης, προσθέτουμε τα εξής:
def item_pubdate(self, item): return item.pub_dateΑυτά.
-
Django sprint
Στις 14 Σεπτεμβρίου το Django διοργανώνει ένα ολοήμερο σπριντ. Ακούω συνεχώς από φίλους και γνωστούς πως ψάχνουν ευκαιρία να ασχοληθούν με κάποιο έργο και να μάθουν περισσότερα πράγματα. Ε, τέτοια events είναι ό,τι πρέπει για να εμπλακεί κανείς! Όλο και κάτι θα βρεθεί για τον καθένα, οπότε μη διαστάσετε να προσθέστε το όνομα σας στη σελίδα wiki.
