Learning Django as an experienced ASP.NET developer - django

I am quite aware of the MVC concept, though I have never developed anything bigger in ASP.NET MVC, but I have been developing ASP.NET pages for years now.
So is there any good tutorial or even better: a book that is suitable for an ASP.NET developer and does comparisons? Especially I am looking for information on Django reusability/how to deal with components, etc.

Regardless of your background, if you want to learn DJango, try the free online Django Book.

I'm not aware of anything that will specifically compare ASP.NET code to Django/Python. There are a bunch of good books though. Practical Django Projects 2nd Edition by James Bennett is an excellent book. It has a couple of example applications you can build.
There's also Pro Django by Marty Alchin that really gets into some of the guts of Django. There isn't any "tutorial" kind of information here. It's more just an extension of the documentation.
Both of these books talk some about reusability in Django, but they don't dwell on it specifically that much. One of Django's design goals has been to keep things modular and reusable. Because of this, there are a lot of mostly plug and play apps that you can drop into your project.
Once you get a little bit familiar with how Django works, you should check out Virtualenv and pip to manage each of your projects. It helps out a ton.

Related

Learning django with "Django from the Ground Up": Outdated?

I've discovered this excelent series of video-tutorials, the "Django from the Ground Up", but as it was uploaded on 09/08 I was wondering if it's still worth going through it or I will teach me and "outdated" way of working with django.
What do you think?
thanks in advance,
Ignacio.
I haven't watched the video, but I suspect it's out of date.
If the tutorial is from 2008, then it's probably based on Django 1.0. As I write this is 2012, the latest version is Django 1.4.
Django is pretty good at not breaking things between versions, however there are changes you have to make to get a 1.0 project working in 1.4. If you're new to Django, you might end up wasting a lot of time struggling with the changes.
Although I personally don't know "Django from the Ground Up", I would not suggest using 2-3 year old tutorials about in-depth parts of Django.
A large part of Django is still the same (forms for example), but a lot of cool things have been added/modified in the Django ORM and Django Admin. So it really depends on what you're learning. If it's a simple part or just an initial look than it would probably be a good starting point.
If you want in-depth knowledge than you will need something more recent.
I think teamtreehouse has some django videos (though I have never seen them), but I would suggest you purchase the django book written by the django creators "The Definitive Guide to Django: Web Development Done Right". But be sure to get the second edition. You should also take a look at "http://harry.pythonanywhere.com/tutorial/1/" he has some very good tutorials you should work through. If however you really want videos try http://www.youtube.com/user/programmersbook he has has whole collection of django tutorials. The only downside on these is that the first 16 videos have no sound.
Anyway's good luck with django!

What web-CMS website language do you recommend?

I am a novice web designer who has a history of creating websites using templates and WSIWYG programs like Dreamweaver. So I know some basic html and a little flash. But that's it - I DO NOT know CSS or CMS. Mostly I'm a graphic designer. But I'm looking to learn a new web language...
I now have a client who wants me to design a website so that in the future, they can edit the website themselves. I know this is a popular trend these days in the client community. And I know this is the main purpose of web CMS. I am looking to learn a new web language but want to make sure I learn the right one.
My question is, what language do you recommend to build this website -- making it the easiest for the client to edit in the future? What language has the best/easiest interface for a NON-DESIGNER to edit a website? Another matter of note, also, is the flexibility of design creativity on my end.
Wordpress? Droopal? Joomla? I've researched a little bit about Adobe Contribute CS5 as well and thought of this also as a viable option... perhaps?
Thoughts? Suggestions?
In depth info would be awesome! Pros/cons of popular languages, common uses for popular languages (blogs, ecommerce, etc.), links to further knowledge, references, etc.
Thanks!!
Without a doubt, you should start with Wordpress.
You may take a look at this google trends comparison: https://trends.google.com/trends/explore?q=wordpress,drupal,joomla
I'm not saying is the best, but Wordpress is VERY popular, it is much simpler to begin with, and I think you'll get much more job offers.
Regarding languages and technologies, Wordpress is PHP powered, so your learning path should be:
- HTML
- CSS
- PHP
- JavaScript / jQuery
And for the future, you might start thinking on Javascript, Node, Angular and React since the internet ship is going that direction (even Wordpress)
My personal recommendation if you wanted to code fancy things would be Python and the Django web framework. However, that's probably a bit more advanced than you can currently handle.
All 3 of the frameworks you've listed are well respected. Which one you choose is really going to depend on what kind of site you're building. If you're building a site which focuses around a blog, by all means use Wordpress. You can add static elements relatively easily, but it shines for episodic content. If you're building a site that has more static "page" type content, either Drupal or Joomla are reasonable choices. I would probably lean a bit towards Drupal. If you tell us what kind of page you're building for your client, we can give you more tailored advice.
As an aside, "CMS" isn't really a language. The systems you're talking about are frameworks. PHP is the language that they happen to be written in.
You won't go wrong with any of the above options.
I would stay away from Adobe Contribute.
There are many good open source content systems such as wordpress, drupal, joomla, etc. They can be customized for your needs. Here are some tips if you want to write your own: learn soke script language like php, perl, python,etc. Php is very user-friendly and there are so much built in functions that make your life easier. You also need some database experience - mysql, postgre, etc. Creating your own cms is a good way to learn a concept, so good luck.
I would definitely start with learning HTML 4 (and 5) and CSS.
For a server side language there are several options. Perhaps PHP is the easiest to start with.
WordPress is a very powerful framework. Joomla is even bigger. It totally depends on the requirements. But if you want to use a framework like Joomla, Drupal, or WordPress, PHP is probably the best language to study. Personally I'd prefer ASP.NET, but that's mostly because I'm already familiar with that framework. I like PHP as well, but it always feels like ASP.NET is more mature. But that's my personal opinion!
Take a look at the features of WordPress, Joomla, Drupal, that's the best advice I can give. You've got the requirements for the website so, after a short study, you are the only one who can make a good decision.

What is a good tutorial for Django other than the Django documentation? [duplicate]

This question already has answers here:
Closed 11 years ago.
What is a good tutorial for Django other than the Django documentation? I need a tutorial to get some expertise with Django.
I don't know your background, but I would have liked someone to have told me when I started with Django to go over the basics of programming for the web. It's quite different to programming normal desktop applications. I learned a lot of things the hard way. (Even simple things like HTTP/POST/GET, the difference between desktop patterns and web application patterns, etc.).
It's important to understand what Django is, and what it isn't. It might be a nice idea to try a very stripped down framework (like Flask for example) in tandem, as it will highlight the 'heavy lifting' Django takes care of. Django abstracts a lot of things meaning you don't have to worry about them. While this is great to start with (you don't have to worry about sessions, authentication, etc.) you will eventually find yourself having to come to terms with them.
Furthermore, I probably should have sat down and learned Python before diving in.
Once you have the basics, Django is quite straightforward; the easiest way is to attempt a simple starter project, that is, a blog, CMS or something similar.
I think you should check out The Django book (2.0). This is the perfect second tutorial as it covers much much more in the same fantastic documentation style. It's also green.
There's also this list of tutorials on the djangoproject.com wiki but it's kind of outdated.
Beyond the Django book, I just started building stuff and googled the problems I ran into.

Django or Zope?

I want to create a website and I am confused which web framework to use. Please recommend me which framework is better: Django or Zope. I am using Python.
If you mean plain Zope2 by zope then I'd go for Django. Most interesting stuff in the Zope world takes place with either Plone or Grok (which is Zope3, which is actually quite different from Zope2).
Grok works nice with relational databases, Plone doesn't really, so if you depend on an RDBMS, either go with Grok or Django.
Zope and Plone have a rather steep learning curve so you'll get started more quickly with Django.
The largest downside about Django is, in my opinion, that it tries do do everything by itself (templating, object publishing, ORM, and so on) while there are many excellent existing components out there. If you want to be able to use your code / knowledge outside of the web framework you're using, consider Pylons or BFG
Many options, no clear answer, sorry :)
I have no idea what sort of website you're trying to create, so it's hard to recommend a specific framework.
I'd recommend getting through some tutorials to see which one you like best (There's also pylons and TurboGears to pick from).
Django seems to be the most popular starting kit these days though.
If your website is very hierarchical and needs fine grained permissions, I'd use Zope. (Don't use Zope if you intend to store your data almost exclusively in an SQL database.)
If you have large datasets that can be put into (sql)tables and need many forms, I'd use Django. (Don't use Django if you need very fine grained access control, and hierarchical data)
You see: both have their weaknesses and strengths (although I am only developing in Django these days. The Zope community seems to be a bit in dispute these days about the way it should develop)
Zope is dead. As is TurboGears, Pylons, BFG, Repoze, CherryPy etc.
Active and popular Python web frameworks include:
* django
* flask
* bottle
Big, medium and small. Take your pick.
Here is a good comparison of Django and Zope (and Rails)
http://cd-docdb.fnal.gov/cgi-bin/RetrieveFile?docid=2715;filename=Comparison.html;version=3
They preferred Django. I, personally, use Django too, so I don't know much about Zope.
Another good thing about Django is that they have very good documentation (though I don't know that of Zope). Many people praise that very much.
Also I found Django quite easy to use, and also they have a ready 'administrator panel', which allows quick web-oriented site management from the first steps. More important for me, however, is its fine integration with python and the simple organisation (in the link above they complained that Zope uses very much of its own features, while Django is closer to pure Python).
If you are starting from scratch I will suggest you should go for Django. You will get lots of features and suppost from django. Easy to debug and best suited for rapid developement. In the other hand, You should only choose Zope, if you have experienced developers familiar with Zope or have existing projects based on Zope and the cost of switching is too high for the potential value gain.
In zope's website it self it is written, It is no longer recommended to start new projects based on it, unless you are intimately familiar with the technology stack.

Web Application Frameworks: C++ vs Python

I am familiar with both Python and C++ as a programmer. I was thinking of writing my own simple web application and I wanted to know which language would be more appropriate for server-side web development.
Some things I'm looking for:
It has to be intuitive. I recognize that Wt exists and it follows the model of Qt. The one thing I hate about Qt is that they encourage strange syntax through obfuscated means (e.g. the "public slots:" idiom). If I'm going to write C++, I need it to be standard, recognizable, clean code. No fancy shmancy silliness that Qt provides.
The less non-C++ or Python code I have to write, the better. The thing about Django (Python web framework) is that it requires you pretty much write the HTML by hand. I think it would be great if HTML forms took more of a wxWidgets approach. Wt is close to this but follows the Qt model instead of wxWidgets.
I'm typically writing video games with C++ and I have no experience in web development. I want to write a nice web site for many reasons. I want it to be a learning experience, I want it to be fun, and I want to easily be able to concentrate on "fun stuff" (e.g. less boilerplate, more meat of the app).
Any tips for a newbie web developer? I'm guessing web app frameworks are the way to go, but it's just a matter of picking one.
I would go with Wt because:
You already know C++
It has a nice layout system, so you don't need to know lots of HTML
It is very well written and a pleasure to code in
Your deployed apps will handle 50 times the load of the python app on less hardware (from experience with pylons apps, 10,000 times the load of a plone app :P)
It has all the libraries that the guy in the first question says it doesn't and more
In built development webserver
Templating language
ORM
unit testing help
open-id and user+password authentication
A brilliant widget library
Web 2.0 isn't an after thought; it wasn't designed on a Request+Response model like all the python frameworks (as far as I know), but on an event driven interactive model.
It uses WebSockets if available
Falls back to normal ajax gracefully if not
Falls back to http for browsers like linx
It is more like coding a gui app than a web app, which is probably what you're used to
It is statically typed and therefore less error prone. Does def delete(id): take an int or a string ?
The unit tests (on my apps at least) take 10-100 times less time than my python app unit tests to run (including the compile time)
It has a strong and friendly community. All my email list posts are answered in 0-3 days.
If you'd like to avoid writing HTML, you could try GWT. However, in my experience, using an intermediate framework to generate HTML and ECMAScript never works anywhere near as well as hand-writing the pages.
[edit] nikow mentions in the comments that Pyjamas is a port of GWT to Python.
Regarding the language, if given the choice between C++ and Python I would pick Python 100% of the time. Even ignoring the obvious difference in abstraction between those languages, Python simply has more useful libraries than C++. You don't have to write your own development-oriented web server -- Django comes with one. You don't need to write a custom template library -- Python has Genshi. Django comes with a capable ORM layer, or for even more control you can use SQLAlchemy. It's barely a contest.
Django is good point to start web development it is great framework
If you look for C++ take a look on CppCMS, it is much more close to Django, it is not like Wt that mimics Qt.
In any case, it is really depends on your needs. C++ can be used for embedded or high performance web applications, but for medium range web sites Django would be better. (and I'm developer of CppCMS)
I think you better go firt python in your case, meanwhile you can extend cppCMS functionalities and write your own framework arround it.
wt was a good idea design, but somehow not that suitable.
If you are exploring Python frameworks (based on the excepted answer I think you are) I think you really owe it to yourself to check out CherryPy. When you write CherryPy apps, you really are just writing Python apps. The framework gets out of your way in a real hurry. Your free to choose your own templating, ORM (if you choose to use ORM), etc. Seriously, take 10 or 20 minutes and give it a look.
The only reason you might want to use C++ over Python is when speed is paramount.
If this is going to be your first web-app, you'll probably be ok with just Python, and your development speed will be orders of magnitude better than with CPP.
Django's templating language is far from powerless, to me it actually seems very pythonic. You actually can write pure python in a template(although this is generally not recommended).
Even better, it's possible to replace Django's templating system with the one you like.
My personal favourite language for this is HAML.
Here's some data on this:
Is there a HAML implementation for use with Python and Django
Having looked several ones, like django, pylos, web2py, wt. My recommendation is web2py. It's a python version of "ruby on rails" and easy to learn.