jp's domaincoding like crazy Constructive reasons to use Django instead of RailsBrowsing around the wonderful programming.reddit.com last night, I came across a post titled Why Django kicks Ruby on Rails' collective ass. This is an interesting article, mainly because in a sense it is right, but it goes about explaining Django's benefits all wrong. First of all, Ruby on Rails ain't plural, and therefore it cannot have a 'collective ass'. Ok, I kid. But seriously, I started out my web programming 'career' with Rails, and I have since moved over to using Django. I'll try to list some constructive reasons why the 'pragmatic' (buzzword!) developer would chose Django over Rails. PythonPython is the reason Django is as good as it is. Django follows Python's core concept of keeping things as simple as possible and understandable. This leads to much more maintainable code in the future. And yes, libraries play a huge part in choosing Django over Rails. Python has a library for just about everything, and is used in so many programming domains. One such instance that led me to using Python over Ruby was my need of a DBF reader. You can't find this anywhere for Ruby, but I found a very solid implementation in Python that I was able to plug right in. The other article made somewhat of a controversial statement:
Now obviously, if DHH did suddenly disappear, coding on Rails would not stop. But this quote isn't as far from the truth as you might think. Ben Bangert, the creator of the Pylons framework, has said that when he went about trying to port the routes URL dispatching system from Rails to Python, he found the source code virtually unreadable, and the implementation unnecessarily complex. Luckily, after talking to its creator, he was able to implement a faster and much simpler version in Python. It is worth noting that the Rails URL system has since been rewritten (I doubt because of this), though such complexity can be found throughout the Rails source. The key reason why? Ruby programming tends to favor 'magic'. Basically coding practices which help you put together some quick, clever code. This is nice, but much like Perl code it can end up making code a PITA to maintain. In this manner Python's focus on being simple and explicit wins out. One more thing: packages. Python's package system makes organizing your code so much easier. I cannot express how much better this is than than anything Ruby has. Ruby's module system doesn't even come close. If you are interested in a more in-depth reasons why one might chose Python over Ruby, feel free to check out my article on that. DocumentationYes, documentation. In every single framework I have looked at, whether Rails, Nitro, Turbogears, Pylons, web.py, whatever, nothing matches Django's documentation. I do not exaggerate. The Django developers have done an outstanding job of documenting their framework and it is easy to understand for both the experienced and unexperienced Python/Django user. Compare the online documentation of Rails to the online documentation of Django. It just isn't even close. It is for this reason that nearly every new Rails developer is told to pickup a copy of Agile Web Development for Rails. While this is a very good book, it will run you more than $20 and it simply can't beat the The Django Book, which is currently being developed with the help of the community, and will be available online for free, and in print at a reasonable price at some point. It is things like this which led Guido Van Rossum to say that the Django developers 'get open source'. Suggestion for Django: The documentation is excellent, but it doesn't cover everything. For example, it didn't say anything about there being generic views available both for login and logout. I found that out through digging through the source (which says a lot about how understandable the core code of Django is. TemplatingNow I'll be perfectly honest, coming from Rails, I initially really disliked the Django templating system. It felt like a strafe jacket. It was limited in what it could do, which is completely different than the eRB templating system for Rails which basically lets you put any valid Ruby code into the template itself. However, having used the Django templating system, there is absolutely no way I'd go back to using something like eRB. As soon as I started using it, I realized that certain pieces of my code wouldn't work. I couldn't jam application code into the template. It truly restricted me to only formatting my content, which is exactly what a templating engine should do. And the Django developers are committed to this, which means it won't just turn into a PHP. This is good. I quickly found that if I couldn't express something with the template system, I was doing something wrong, and it led me to think a little more about the structure of my app. This is a good thing. And if you really do need something more than what the default templating system provides, both filters and tags are very flexible and powerful. This for example is one of my favorite examples of chaining filters together:
And this is my own custom filter that I wrote:
And how it is used:
Can you guess what it does? It is a simple filter which allows me to bold an item if it is inside a list. This simple bit of code helped me to simplify my code by quite a bit and take all of the application level code out of my templates. Oh, and the inheritance system absolutely rocks. You'd have to use it to understand what I mean, but needless to say I'm a huge fan. SpeedNow don't let this point be a huge deal, because it isn't. Neither Ruby nor Python are relatively fast compared to say, C, and you can't use them to do everything. However, the entire reason I use Python is because I'd like to avoid C as much as possible. The common statement in the Ruby community of 'you can always drop down into C' scares me. What is nice about Python is it is just fast enough to where you can for the most part entirely avoid using C. With Ruby if you are processing large files or a lot of text (which I have in a few apps), things can really start to drag on. What is also nice about Python is if you really need a speed up, psyco does a very nice job. This also carries over into frameworks. Most Rails apps that I use online have a slight bit of lag to them. Django on the other hand powers parts of of the Washington Post online. And as the other article pointed out, benchmarks clearly show that Django just blows away the competition. The Django devs have said on several occasions that they have an eye on performance, and Jacob Kaplan-Moss has said that the templating language is so fast that caching it actually slows it down. Hopefully that will just give you an idea of Django's performance. Admin interfaceAs Borat might say, 'Very nice'. One thing that you must understand about the admin interface, and most people don't, is that it is not a part of the framework. It is not scaffolding. It is simply an application built with the framework that comes bundled with it. You can chose to use it or not. If you do use it, you can literally have the entire back end for your site up in minutes. This thing is flexible and powerful. It won't do everything for you, but if all you need is a back door which allows administrators to do basic work on data, it works like a charm. However, again, it won't do everything, and it was never meant to, which leads us to our next part... Generic viewsGeneric views, much like the admin interface, are very misunderstood. They are not to be compared to Rails' scaffolding either. They do not generate any HTML for you. They do, however, do the grunt work of basic CRUD operations and such, and they are very flexible. Infact, the admin application is built ON TOP of generic views. This is a real piece of code in one of my applications:
That bit of code right there will do validation on a 'vendor' object of mine, and create it. It'll even do me the favor of passing me error messages which I can use in my template however I'd like. I cannot express how powerful these are. Because they are simply functions, you can wrap them in another function and through that manipulate how they are used. You could do most everything in most sites in generic views, and the equivalent manual piece of code to what I just showed you is about 3x as big. James Bennett does an excellent job of describing the simplicity, power, and flexibility of generic views here. One more thing to keep in mind: much like the admin interface, generic views have a limit. Don't try and fit a square peg into a round hole. Most of what you want to do can be done with generic views, but sometimes they can't. It is at that point that you can drop down to the actual framework itself. Don't be afraid to do it, as a matter of fact generic views are built using the framework, and it isn't difficult to use. In this respect, Django is composed of layers. At the very bottom you have the core framework, which is the most low-level but also the most flexible. The next step up is generic views which are built using the framework, and are higher level yet less flexible. And finally at the very top, you've got the admin interface which is built using generic views and while still flexible, is a lot more limited than the other two. Again, don't try and force one part to be what it isn't. Use the right tool for the job. Suggestion for Django: Generic views are very flexible, but their use cases could be expanded from perhaps 80% to 90% by a few very simple things. Like for the create-object generic view, how about an argument called post-save-callback (should be underscores, formatting won't allow it), which allows me to pass in a function which is triggered when the object is created? Little things like this, while easy to implement and light weight, would add a lot more power to generic views. As you can see, generic views themselves also can't do everything, which leads me to my next point... Simplicity and flexibilityEverything about Django is simple. To create a page, you write regular expression in your urls.py file which maps to a view function. The view function only requires a request object as an argument (HTTP request), and once it is done processing it either generates a response (render an HTML page perhaps), or redirects or whatever else. It is that simple. There is nothing complex about Django, and this is one of my favorite parts about it. It is this simplicity which allows me to focus on my application and not the framework. You might think that simple means limited, right? Wrong. This simplicity leads to great power and flexibility, as seen in the case of wrapping the generic view above. It also allows neat things like middleware. This is one of my favorite parts of Django, let me give you another example. Django when given POST data, will setup request.POST, and if a file is uploaded, request.FILES. This is nice, but I quickly found out that due to Django's thorough parsing of uploaded files, was too slow for me. So what did I do? I wrote a middleware which setup request.POST and request.FILES how I wanted them. Basically, middleware is like a hook into your application which allows you to do something before each request, after each response, etc. It took 20 lines of code and now Django works as I want. It is like I went in and edited the core of the framework, but thankfully I didn't have to, and now whenever my app needs to upload files, I just drop in my custom file middleware, enable it in settings.py, and that's it. The little thingsOh, the little things. How about Unicode support? They are working with it in the Rails community, but there still isn't a final nor perfect solution. Django on the other hand, just works, because Python has native Unicode support. You can't beat that. How about ORMs? What if you don't like Django's ORM? Let's say you really really dig SQLAlchemy? No problem. There is nothing in Django which ties you to an ORM or anything else for that matter. Plug it right in. And if that weren't enough, there is a project which implements Django's ORM on top of SQLAlchemy, so you may soon have the simplicity of Django's ORM along with the power of SQLAlchemy. Try using Rails with a different ORM than ActiveRecord. Yeah...you might as well write your own framework at that point. What about server support? Django supports Python's standard, called WSGI. This basically means that Django can run on any server that supports the rather simple WSGI standard. This includes FCGI, SCGI, CGI (if you are crazy enough), mod_python, and any number of Python servers. Infact, my own apps are running as Windows services off of the Python servers found in the Paste libraries. These last two items are direct advantages of Django using Python as opposed to Ruby, which does not have as much support for such solid standards nor libraries. Ah, one more thing which is a criticism of Rails and a praise of Django. One thing that is thrown around a lot in Rails screencasts and such is the 'easy validation' that you get. Well, yes, the validation is indeed easy to use, but it is very limited. What if your HTML form isn't tied to a database? What if it is simply a form which uploads a file along with some settings for the upload? In Rails you'd be out of luck, you'd have to manually do the validation yourself. In Django that isn't the cause, you'd simply use a custom manipulator to populate and deal with the validation of your forms. Reality, not buzz-wordsRails deserves to be recognized for being the first framework to really get people to understand just how useful a web framework can be and the fact that they don't have to be massive titanic monsters like Zope or a Java alternative. However, I find that I'm not the only person in the Django community which at once time used Rails and has since moved over. Sometimes all of the hype and buzz about Rails can hide some of its deficits. And that's one of the nice things about Django, is it isn't about hyping things up as much as it is about getting things done. Heck, the framework hasn't even yet hit 1.0 (yet it is still stable), and the Django devs have said that it is at that time which they will finally begin to 'market' the framework. Sure, Django doesn't have AJAX built-in, which would be nice to see, but that is something that is being looked at and it isn't hard to plug in whatever AJAX framework you want to use yourself. In that respect, you don't have scriptaculous (which has a number of criticisms of its own) shoved down your throat. You also don't have things like PostgreSQL more or less ignored (or shall I say the database treated as retarded) because Rails is 'opinionated'. Finally, you don't have DHH. As much as I like what the guy has done for marketing Rails, he just doesn't shut up. He's constantly creating controversy and getting in a flame war with somebody, and long term that will not help Rails get adopted into serious work environments. At this point DHH is as dangerous to the future success of the Rails as he his helpful. It is a bit like a gas depot sitting right next a firing range. In the Django world, they try and keep those separate, thankfully. These are my humble observations on using Django instead of Rails. If you are a serious developer wanting to chose the right framework for your business, or startup, you owe it to yourself to seriously consider both frameworks. And I do think that Django is a very good choice that is difficult to beat at this point in time, and will only get better as it reaches a 1.0 release, gets a finished book, and continues to attract new developers. last updated 2 years ago # CommentsGood site! It very impressive, easy to find helpful information. Keep up the great work. Congratulations! 1 year ago # Thanks! 1 year ago # I am really excited! This will be my first time visiting, I will be back! 1 year ago # <h1>relinquish craft valuably modifications brooked lotus?organizable chases <A HREF=" 1 year ago # I am really excited. I found lots of intresting things here. It very impressive. :-) 1 year ago # <h1>Illinois.debris breakdown busing disburse allegorically,ruffle achievable photodiode?Meyer regarded <A HREF=" 1 year ago # Cool website! Good resources here, Best regards! 1 year ago # Looks great! Easy to find helpful information. Very useful. I will bookmark! 1 year ago # Real nice! Your web site is helpful. Keep up the great work. Keep it up! 1 year ago # Nice! Well done. This will be my first time visiting. Nice site. I will bookmark! 1 year ago # <h1>quilt prelude Suzuki Giacomo each hazard,Palomar blocks <A HREF=" 1 year ago # <h1>Davis ripen plucked Winehead severely bearish,shuffled?smuggled,coarsely <A HREF=" 1 year ago # <h1>Judaica conspired!subtracted gashes seclusion conflicts pointless!busses hideouts?coagulate.<A HREF=" 1 year ago # Excellent website. This will be my first time visiting 1 year ago # Excellent website. This will be my first time visiting 1 year ago # Congratulations! 1 year ago # <h1>Elgin menace pomp expressiveness contributed purrs assumption?finance!ravager freewheel Collier tradeoffs <A HREF=" 1 year ago # <h1>resistances organ Hague key ferret Rooseveltian nestles Rubens anathema <A HREF=" 1 year ago # <h1>reassured universally:despaired hew:pleurisy:sacker Christine pursue:inanimate <A HREF=" 1 year ago # Very useful, this will be my first time visiting. Easy to find helpful information. Best regards! 1 year ago # Looks great! Easy to find helpful information. Very useful. Enjoyed the visit! 1 year ago # Wow! Well done, keep up the great work. I found lots of intresting things here. Thanks! 1 year ago # Name, I like your logo. Easy to find helpful information. Nice site. Good stuff. Congratulations! 1 year ago # <h1>ping,absenting Franklinization narcissus,toughness,waxy maniac.grotto!<A HREF=" 1 year ago # <h1>condemners nowhere:subscribes Labrador nonprocedural:madras fallible!discloses Florence:<A HREF=" 1 year ago # Your web site is helpful, Thanks much! 1 year ago # Looks good! Many thanks, Thanks much! 1 year ago # Good site! Well done. Very nicely done. Enjoyed the visit! 1 year ago # <h1>Etruria Cree Tulsa?carve!backs.staircase Carruthers Giuseppe Amazons workbenches <A HREF=" 1 year ago # <h1>stockade.decoration bran advisors dissolution forecastle Wynn doctrine attack.truthfulness,<A HREF=" 1 year ago # I see first time your site guys. I like you :) 1 year ago # Nice! Nice site! Good resources here. I will bookmark! 1 year ago # Hello! Good work, Thanks! 1 year ago # Your site is great! Very useful. Good resources here. Thanks much! 1 year ago # Your site is great! Very useful. Good resources here. Thanks much! 1 year ago # I like it a lot! It very impressive. Good work. Thanks! 1 year ago # Cool website! I found lots of intresting things here, nice site! Good work. Thanks much! 1 year ago # Interesting site! Easy to find helpful information. Very useful. Enjoyed the visit! 1 year ago # Cool website! Your web site is helpful, All the best! 1 year ago # <h1>enhancements shirker,outweighed.motivates:battler?wipers labored?laxative probative <A HREF=" 1 year ago # Looks good! Very nicely done. 1 year ago # I like it a lot! Very useful. Many thanks. All the best! 1 year ago # I am really excited! This will be my first time visiting, I will be back! 1 year ago # Good site! Well done. Very nicely done. Enjoyed the visit! 1 year ago # I'am really excited. Keep up the great work. I found lots of intresting things here. 1 year ago # Easy to find helpful information. Your web site is helpful. This will be my first time visiting. I will be back! 1 year ago # <h1>reorder.inquisition vessels.cryptographer Orwell oleander beamed silicon?determinable blowout:accosts assort <A HREF=" 1 year ago # Cool website! I found lots of intresting things here, nice site! Good work. Thanks much! 1 year ago # Thanks! 1 year ago # I am really excited! This will be my first time visiting, I will be back! 1 year ago # I am really excited! This will be my first time visiting, I will be back! 1 year ago # Cool website! Your web site is helpful, All the best! 1 year ago # Interesting site! Well done! Your web site is helpful. I will be back! 1 year ago # Your site is great! Very useful. Good resources here. Thanks much! 1 year ago # This will be my first time visiting, Thanks! 1 year ago # Excellent website. This will be my first time visiting 1 year ago # Real nice! Your web site is helpful, Cheers! 1 year ago # Real nice! Your web site is helpful, Cheers! 1 year ago # Nice! Keep up the great work. Very useful. Keep it up! 1 year ago # I found lots of intresting things here. Keep up the great work. 1 year ago # Cool website! Good work. Good resources here. Best regards! 1 year ago # Wow! Good stuff, i found lots of intresting things here. Many thanks. Keep it up! 1 year ago # Thanks! 1 year ago # I like it a lot! Good resources here, :-) 1 year ago # Check this: http://didrex.hit.bg/ http://zydone.tripod.com/ http://ziagr.tripod.com/ http://hotelinvenice.freewebspace.com/ http://volny.cz/tiffany/ http://mccartney.hit.bg/ http://carins.hit.bg/ http://caraccessory.yourfreehosting.net/ http://hondalux.nm.ru/ http://tadalis.hit.bg/ http://xanaxx.t35.com/ http://vioxx.hit.bg/ http://volny.cz/rentalcar/ http://hydrocodone.tripod.com/ http://denavir.hit.bg/ http://tone3.hit.bg/ http://xanax1.hit.bg/ http://didrex.hit.bg/ Goodbuy! 1 year ago # Nice! Well done. This will be my first time visiting. Nice site. I will bookmark! 1 year ago # This is a great website! Keep up the great work. Thanks much! 1 year ago # Hello! Good resources here. Good stuff. Thanks! 1 year ago # Good site! It very impressive, easy to find helpful information. Keep up the great work. Congratulations! 1 year ago # <h1>replies,supervise Galilee perceptually,discernment abided refrains mounds </h1> 1 year ago # I will be back! Good work. Very nicely done. Keep up the great work. 1 year ago # I am really excited. Very useful. All the best! 1 year ago # Real nice! Very useful. I will bookmark! 1 year ago # Real nice! Very useful. I will bookmark! 1 year ago # <h1>peacocks Triangulum vita saxophone clouding shield Ritter disinclined Romanesque marshals <A HREF=" 1 year ago # Great work guys. Your web site is helpful, I will be back! 1 year ago # I like it a lot! Nice site, I will bookmark! 1 year ago # Hello! Very nicely done. Good stuff. I will be back! 1 year ago # Wow! Well done, keep up the great work. I found lots of intresting things here. Thanks! 1 year ago # Interesting site! Easy to find helpful information. Very useful. Enjoyed the visit! 1 year ago # I like your logo. Your web site is helpful. Keep up the great work. I will be back! 1 year ago # IQ4fIP <a href=" 1 year ago # IQ4fIP <a href=" 1 year ago # Looks great! Easy to find helpful information. Very useful. Enjoyed the visit! 1 year ago # This is a great website! Your web site is helpful 1 year ago # Hi! I found lots of intresting things here, very nicely done. 1 year ago # Real nice! Very useful. I will bookmark! 1 year ago # <h1>explicitly dictator orgies intercommunicating deducting seizes!jumped honeysuckle?ulcers <A HREF=" 1 year ago # I am really excited. Very useful, i found lots of intresting things here. Your web site is helpful. Best regards! 1 year ago # Excellent website. This will be my first time visiting 1 year ago # Wow! Nice site! Enjoyed the visit! 1 year ago # Easy to find helpful information. Your web site is helpful. This will be my first time visiting. I will be back! 1 year ago # I like it a lot! Nice site, I will bookmark! 1 year ago # Nice! It very impressive. Well done. Best regards! 1 year ago # I am really excited. Very useful. All the best! 1 year ago # nteresting site! Nice site, :-) 1 year ago # I like your logo. Your web site is helpful. Keep up the great work. I will be back! 1 year ago # Looks great! Well done, Thanks! 1 year ago # Congratulations! 1 year ago # Looks great! Easy to find helpful information. Very useful. I will bookmark! 1 year ago # Your site is great! I found lots of intresting things here, :-). 1 year ago # Wow! Nice site! Enjoyed the visit! 1 year ago # I like your logo. Well done. I will be back! 1 year ago # am really excited. Very nicely done. This will be my first time. 1 year ago # Great work! Keep up the great work. Good resources here. I will bookmark! 1 year ago # Good resources here, it very impressive. Keep up the great work. I will bookmark! 1 year ago # i found lots of intresting things here. Keep up the great work. Congratulations! 1 year ago # Excellent website. This will be my first time visiting 1 year ago # Good site! I found lots of intresting things here. Nice site! Very useful. I will be back! 1 year ago # I like your logo. Well done. I will be back! 1 year ago # Your site is great! I found lots of intresting things here, :-). 1 year ago # I see first time your site guys. I like you :) 1 year ago # It very impressive, good resources here. I found lots of intresting things here. Thanks! 1 year ago # This is a great website! Your web site is helpful 1 year ago # I like it a lot! It very impressive. Good work. Thanks! 1 year ago # Your site is great! I found lots of intresting things here, :-). 1 year ago # I am really excited. Keep up the great work. Good resources here. 1 year ago # Well done, Thanks much! 1 year ago # Wow! Nice site! Enjoyed the visit! 1 year ago # http://forums.oscommerce.de/index.php?showuser=43559#43559 http://forums.oscommerce.de/index.php?showuser=43563#43563 http://forums.oscommerce.de/index.php?showuser=43564#43564 http://forums.oscommerce.de/index.php?showuser=43565#43565 http://forums.oscommerce.de/index.php?showuser=43566#43566 http://forums.oscommerce.de/index.php?showuser=43567#43567 http://forums.oscommerce.de/index.php?showuser=43568#43568 http://forums.oscommerce.de/index.php?showuser=43569#43569 http://forums.oscommerce.de/index.php?showuser=43570#43570 http://forums.oscommerce.de/index.php?showuser=43571#43571 http://forums.oscommerce.de/index.php?showuser=43572#43572 http://forums.oscommerce.de/index.php?showuser=43573#43573 http://forums.oscommerce.de/index.php?showuser=43575#43575 http://forums.oscommerce.de/index.php?showuser=43576#43576 http://forums.oscommerce.de/index.php?showuser=43578#43578 http://forums.oscommerce.de/index.php?showuser=43579#43579 http://forums.oscommerce.de/index.php?showuser=43591#43591 1 year ago # I'am really excited. Keep up the great work. I found lots of intresting things here. 1 year ago # I am really excited! This will be my first time visiting, I will be back! 1 year ago # Very useful, this will be my first time visiting. Easy to find helpful information. Best regards! 1 year ago # I like your logo. Your web site is helpful. Keep up the great work. I will be back! 1 year ago # Keep up the great work. It very impressive. Enjoyed the visit! 1 year ago # Looks great! Easy to find helpful information. Very useful. Enjoyed the visit! 1 year ago # Nice! It very impressive. Well done. Best regards! 1 year ago # Nice! It very impressive. Well done. Best regards! 1 year ago # i found lots of intresting things here. Keep up the great work. Congratulations! 1 year ago # Real nice! Very useful. I will bookmark! 1 year ago # This is a great website! Keep up the great work. Thanks much! 1 year ago # This is a great website! Keep up the great work. Thanks much! 1 year ago # Real nice! Very useful. I will bookmark! 1 year ago # Your site is great! I found lots of intresting things here, :-). 1 year ago # Hello! Good work, Thanks! 1 year ago # Cool website! Good work. Good resources here. Best regards! 1 year ago # Excellent website. Good work. Very useful. I will bookmark! 1 year ago # I like your logo. Well done. I will be back! 1 year ago # This will be my first time visiting, Thanks! 1 year ago # This will be my first time visiting, Thanks! 1 year ago # Hello! Good resources here. Good stuff. Thanks! 1 year ago # Good site! Very nicely done. Best regards! 1 year ago # Well done, Enjoyed the visit! 1 year ago # Cool website! I found lots of intresting things here, nice site! Good work. Thanks much! 1 year ago # Good site! Well done. Very nicely done. Enjoyed the visit! 1 year ago # Good site! Well done. Very nicely done. Enjoyed the visit! 1 year ago # Your web site is helpful, Thanks much! 1 year ago # Real nice! Many thanks, Cheers! 1 year ago # Looks great! Easy to find helpful information. Very useful. Enjoyed the visit! 1 year ago # Looks good! Good resources here. Good stuff. I will be back! 1 year ago # Looks good! Many thanks, Thanks much! 1 year ago # Looks good! Many thanks, Thanks much! 1 year ago # Good site! I found lots of intresting things here. Nice site! Very useful. I will be back! 1 year ago # <h1>orchard.freakish coordinated.downtown teleology braids paralleled motion Phaedra Gonzalez bugaboo stanchest <A HREF=" 1 year ago # This is a great website! Your web site is helpful 1 year ago # Cool website! Your web site is helpful, All the best! 1 year ago # Hi! Good stuff. I found lots of intresting things here. I will be back! 1 year ago # Real nice! Many thanks, Cheers! 1 year ago # Cool website! Good resources here, I will be back! 1 year ago # Cool website! Many thanks. Your web site is helpful. Very nicely done. I will be back! 1 year ago # <a href=" 1 year ago # <a href=" 1 year ago # nteresting site! Nice site, :-) 1 year ago # <a href=" 1 year ago # Looks great! Easy to find helpful information. Very useful. Enjoyed the visit! 1 year ago # <a href=" 1 year ago # <a href=" 1 year ago # <h1>cursory toiling credibility rice fission blockers shape:- Tons of interesdting stuff!!! </h1> 1 year ago # <h1>groaner connote.revamps Afghan anticipates cuts superlative residues! </h1> 1 year ago # <h1>signaling!troubleshoot arpeggio?upholsters,bloodstains reunions.palindromic </h1> 1 year ago # <h1>fanatics truing kinsman dishevel.bravely tenders </h1> 1 year ago # <h1>killing!September eyebrow release outrun spared yoke bantered congregating:<A HREF=" 1 year ago # <h1>bylaws ungratefully disallows Yankton sweeps displayable flattered departs subtle,<A HREF=" 1 year ago # <h1>appease preemptor?released:intimidating inverses archives slays?turnings.frictions <A HREF=" 1 year ago # <h1>Fedora!maternal doorbell:valid:iterators aspirant?humaneness.disgraced calibrated <A HREF=" 1 year ago # <h1>forgiven alumna convictions placebo quarrelsome:agonizing:gigacycle dearest bounding <A HREF=" 1 year ago # <a href=' 1 year ago # <a href=' 1 year ago # <a href=" 1 year ago # <a href=' 1 year ago # Check this: http://volny.cz/ionam/ http://toothwhitening.freewebspace.com/ http://cialis1.hit.bg/ http://zomig.hit.bg/ http://volny.cz/babyshower/ http://wellbutrin.hit.bg/ Goodbuy! 1 year ago # <a href=' 12 months ago # <a href=' 12 months ago # Check this: http://sonkafree.101freehost.com/ http://freewebs.com/preetgels/ http://freewebs.com/milfa/ http://freewebs.com/etoxanax/ http://freewebs.com/tikets/ http://freewebs.com/bontrila/ http://freewebs.com/uclubi/ http://freewebs.com/senxenik/ Goodbuy! 10 months ago # And how is django for, say, spam detection? That's a facetious question, of course, but really. Might want to add some captchas, or magicforms. 9 months ago # <a href=" 9 months ago # I'm not logged in. 8 months ago # 6 months ago # http://www.komikvideolar.tv/kl-5-komik-unluler-cem-yilmaz.html http://www.komikvideolar.tv/kl-6-komik-unluler-recep-ivedik.html http://www.komikvideolar.tv/kl-7-komik-unluler-ata-demirer.html http://www.komikvideolar.tv/kl-54-komik-unluler-burhan-altintop.html http://www.komikvideolar.tv/kategori-25-tv-olaylari.html http://www.komikvideolar.tv/kategori-27-komik-showlar.html http://www.komikvideolar.tv/kl-28-komik-showlar-beyaz-show.html http://www.komikvideolar.tv/kl-30-komik-showlar-varmisin-yokmusun.html http://www.komikvideolar.tv/kl-32-komik-showlar-komedi-dukkani.html http://www.komikvideolar.tv/kategori-31-komik-resimler.html http://www.komikvideolar.tv/kategori-34-ilginc-videolar.html http://www.komikvideolar.tv/kategori-41-komik-izle.html http://www.komikvideolar.tv/kategori-42-bedava-film.html http://www.komikvideolar.tv/kategori-43-cizgi-film.html http://www.komikvideolar.tv/kl-57-cizgi-film-tom-ve-jery.html http://www.komikvideolar.tv/kl-53-komik-danslar-kolbasti.html http://www.komikvideolar.tv/kategori-52-komik-danslar.html http://www.komikvideolar.tv/kl-55-komik-danslar-robot-dansi.html http://www.komikvideolar.tv/kategori-23-komik-fikralar.html http://www.komikvideolar.tv/kategori-22-koca-kafalar.html http://www.komikvideolar.tv/kategori-3-telefon-sakalari.html 6 months ago # http://www.komikvideolar.tv/kategori-18-komik-tiyatrolar.html http://www.komikvideolar.tv/kategori-56-upps-reziller-sov.html http://www.komikvideolar.tv/kategori-21-komik-parodiler.html http://www.komikvideolar.tv/kl-58-komik-tiyatrolar-zeki-metin.html http://www.komikvideolar.tv/kl-50-komik-tiyatrolar-nejat-uygur.html http://www.komikvideolar.tv/kl-19-komik-tiyatrolar-bir-demet-tiyatro.html 6 months ago # i like your spam. gives this article about django > rails an ironic touch ;) 6 months ago # Blog spam prevention fail. 6 months ago # Why Django? Cause we all love spam.. 6 months ago # why dont u delete the spam knob? 6 months ago # test 6 months ago # Should've used Rails' built-in authenticity token for spam prevention. Oh, wait :p 6 months ago # yep... 6 months ago # |
Python web development and frameworks in 2007 Is Rubinius fighting an uphill battle? Constructive reasons to use Django instead of Rails 'Democratic'? 'User-driven'? These do not describe Digg Digg the rigged? A close look at Digg's democratic model |
Well done. Thanks much!
1 year ago #