Category Archives: Development

Django: Preserve table data when changing model (adding fields)

Overview

Django, out-of-the-box doesn’t knows how to add rows to your db when the model changed, You have 2 options:

  1. manually add the field to the db. (I won’t demonstrate this)
  2. export data > reset your db > import data.

Continue reading

Django URL dispatcher routing beginners tutorial

How to use Django URL dispatcher

Django routing module called URL dispatcher

url.py

Normally, When a user requests a page from your Django-powered site Django loads the URLconf  module from a file called urls.py at the root of your project, Ordinarily, this is the value of the ROOT_URLCONF setting, The URL dispatcher can be overridden when the incoming HttpRequest object has an attribute called urlconf (set by middleware request processing), its value will be used in place.

First line in your urls.py should be:

1
from django.conf.urls import patterns

 

urlpatterns

Django loads that file and looks for the variable urlpatterns. This should be a Python list, in the format returned by the function django.conf.urls.patterns().

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from django.conf.urls.defaults import patterns

urlpatterns = patterns('',
    # ex: /
    (r'^$', 'myapp.views.home', {}, 'index'),
    # ex: /about
    (r'^about', 'myapp.views.about', {}, 'about'),
    ....
)

# To add more urlpatterns in the same urls.py you can use:
urlpatterns += patterns('',
    ....
)

URL Pattern Arguments

  1. First Argument is URL pattern.
  2. Second is the View to send back.
  3. Third is Dictionary to send to the view.
  4. Last argument is Name. Naming enables calling {% url name %} from templates.

Notes

  • Django runs through each line, in order, and stops at the first one that matches the request.
  • The ‘r’ in front of each regular expression string is optional but recommended. It tells Python that a string is “raw” – that nothing in the string should be escaped. See Dive Into Python’s explanation.

url() function

You can use the url( convenience wrapper.

The url() function is passed five arguments, two required: regex and view, and three optional: kwargsname, and prefix.

url(regex, view, kwargs=None, name=None, prefix=”)

You can use the url() function, instead of a tuple, as an argument topatterns(). This is convenient if you want to supply a name but not extra_context you’d still have to include an empty optional extra arguments dictionary in the tuple version

Remember you need to include the url, from django.conf.urls.defaults.

1
from django.conf.urls.defaults import patterns, url

These are the same:

1
2
(r'^$', 'views.home', {}, 'index'),
url(r'^$', views.index, name='index'),

 

Import views to shorten code

You can use either way, as you feel convenient for you. It’s the same code above, but using Import to shorten code:

Method 1: Import Views Class

1
2
3
4
5
6
7
from django.conf.urls.defaults import patterns
from myapp import views

urlpatterns = patterns('',
    (r'^$', 'views.home', {}, 'index'),
    .....
)

Method 2: Import Views (or *)

1
2
3
4
5
6
from django.conf.urls.defaults import patterns
from myapp.views import home

urlpatterns = patterns('',
    (r'^$', 'home', {}, 'index'),
    .....

Method 3: Use Default Pattern

1
2
3
4
urlpatterns = patterns('myapp.views',
    (r'^$', 'home', {}, 'index'),
    .....
)

 

Include

You can include from another file, Django app or object. remember to import the include() function.

1
2
3
4
5
6
from django.conf.urls.defaults import patterns, url, include
urlpatterns = patterns('',
    # ex: /help
    url(r'^help/', include('help.urls')),
    .....
)

This code will search for url.py file inside help app in your django project. construct the file the same as the url.py file.

 

Include in the same file

1
2
3
4
5
6
7
8
9
10
from django.conf.urls.defaults import patterns, url, include

extra_patterns = patterns('',
    .......
)

urlpatterns = patterns('',
    (r'^extra/', include(extra_patterns)),
    .....
)

 

 

These are the URL dispatcher basics. Maybe I’ll be post later another post on more advanced aspects of the URL dispatcher include URL grouping, passing extra parameters to view and more…

CYA,

And good luck with Django – It worth it!

How to disable java in all browsers at once

Overview

Several major companies have been hacked lately. Security advice for web users last week from the US Department of Homeland Security encouraging to disable java on browsers. Disable java in each browser takes time. You will learn how to disable java for all at once. and also for each browser if needed.

Continue reading

Develop with the new WordPress 3.5 Media Manager.

Overview

If you are a WordPress plugin developer, you may want to use the new build-in WordPress 3.5 Media Manager in your plugin. This tutorial will teach you how to implement the Media-Manager in your plugin.

Continue reading

Windows 8: How to add/pin your website tile to start menu (meta tags)

 Overview

You will learn how to add necessary META your website as a tile to support windows 8 tile start menu pin using IE 10. Just like windows 8 application do!.

Continue reading

Using modern.IE – Testing for Internet Explorer just got a little easier

internet explorer logo

Microsoft to developers: This is the ‘modern.IE’ world

Microsoft announced their new tool called modern.IE. http://www.modern.ie/
Using this tool (website) you can scan for common coding problems.

Continue reading

VirtualEnv Tutorial / VirtualEnvWrapper Beginner Tutorial

VirtualEnv Tutorial Overview

Virtualenv tutorial. In this tutorial I will show you in easy steps how to install and use VirtualEnv & VirtualEnvWrapper on your CentOS 6.x environment.

 

Install Python

1
yum install python
yum install python

Continue reading