Thursday, February 12, 2009

Django and Eclipse

(When I have interest, I have planned to convert this to HTML, for now, let it be Plain text)
Anyone is welcome to edit, repost and/or distribute the following instructions, I just have a little wish: Provide link for this post.

Used: Eclipse Classic Ganymede (3.4.1), Django 1.0.2, PyDev

Install Pydev
... TODO ...

Python interpreters (Eclipse preferences -> Pydev -> Interpreter - Python)
Press `New`
Type (Ubuntu) `/usr/bin/python`
Type (Windows) `C:\Python25\python.exe` *** Warning: not tested!
Press `Ok`
If you have installed Django to site-packages
*UNCHECK* I repeat *UN*CHECK the Django from the Pythonpath list
(Or remove from the list)
(We are *NOT* going to use the site-packages django to this for development purposes)

Django project for Eclipse

File -> New -> Pydev project
Project name: `Django`
Grammar version: `2.5`
Uncheck `Create default `src` folder and add it to the pythonpath?`
Error about interpreter?: `Click here to configure an interpreter not listed` see above Install Pydev section

Pydev Package Explorer (the "file tree" on the left) -> Django (right click) -> Properties
Add source folder -> Choose `Django` (the project's "root" directory, for why, see (*1))

(Ubuntu) in terminal (go to your eclipse workspace directory):
cd Django/
svn co .

(Windows) Extract the django release to the Django/ dir:
(after extraction you should have directories like `Django/django`, `Django/examples`, `Django/docs` ...)

Pydev Package Explorer (the "file tree" on the left) -> Django (right click) -> Refresh (now zip some coffee, this might take while)

All is set for Django project.

(*1) Why root? Because for instance `django` and `examples` directories in django distribution should be in pythonpath and they are in root, this is only reasonable way since we won't relocate them.

My django project:


File -> New -> Pydev project
Project name: `Django Poll`
Grammar version: `2.5`
*Check* I repeat *Check* (It should be checked by default) the `Create default `src` folder and add it to the pythonpath?`
Error about interpreter?: This can't be, you set it up on `Django project for Eclipse`
Click `Next`
(In reference page)
Check `Django` (the Django project you created earlier, remember that?)
Press `Finish` from within Eclipse:

Run -> External tools -> External tools configurations
Left side tree: Right click `Program` -> New
Name: `Django-admin (for project src directory)`
Location (Ubuntu): `/bin/bash`
Location (Windows): `c:\Windows\system32\cmd.exe` *** Warning: Not tested
Working directory: `${project_loc}/src`

Environment tab:
New (from right)
Name: `PATH`
Value (Ubuntu): `${env_var:PATH}:${workspace_loc:Django/django/bin}`
Value (Windows): `${env_var:PATH};${workspace_loc:Django/django/bin}` *** Warning: Not tested
Click `Ok`
New (from right)
Value (Ubuntu): `${project_loc}/src:${workspace_loc:Django/}`
Value (Windows): `${project_loc}/src;${workspace_loc:Django/}` *** Warning: Not tested
Click `Ok`

Press `Apply` and `Close` (Don't try to Run, it will (most likely) give error)

Run -> External tools -> Organize favorites
Click `Add`
Choose `Django-admin (for project src directory)`
Click `Ok`
Click `Ok`

Now in order to run this tool one must do *TWO* things:

1.) Pydev Package Explorer (the "file tree" on the left) -> Click on the `Django Poll` project (even if it is selected, just click it (to get focus on it))

2.) Run -> External tools -> `Django-admin (for project src directory)`
*** If you get error about `Variable references empty selection: ${project_loc}`, you didn't do 1.) well enough, you *MUST* click it first and nothing else afterwards, the *project folder* in *Pydev Package Explorer* must have *focus* (being selected is not enough)!

Console window (if not visible do Window -> Show view -> Console), type:

If all went well you should get something like: `Type help for usage.`

Following is from official django tutorial

Console window, type:
` startproject mysite`

PyDev Package Explorer (the tree on the left) -> `Django Poll` (right click) -> Refresh
(If all worked well you should now have directory `src/mysite` in your project) from within Eclipse

PyDev package explorer (tree in the left) -> `Django Poll` (your project name) -> src -> (right click) -> Properties
(You should be in dialog called `Properties for`)
Click `New...`
Choose `Python Run`
(For reason unknown Eclipse doesn't prepopulate the following fields)
Name: `Django Poll -- Custom` (Yes you read it right, I prefixed it with project name for extra verbosity)

Main tab (default tab):
Project click `Browse`, choose your project `Django Poll`
Main module click `Browse`, choose `src -> mysite ->`, click `Ok` (it should now read ${workspace_loc:Django Poll/src/mysite/} )

Arguments tab:
Press `Variables` (from Program arguments)
Choose `string_prompt`
(It should have added this `${string_prompt}`)
Click `Ok`
Click `Ok`
Click `Ok`

Running test:

Locate Run button from toolbar (Green play button, with arrow downwards next to it), press the arrow -> Choose `Organize Favorites`
Press `Add...`
Check the `Django Poll: Custom`

Run button (press the arrow) -> `Django Poll -- Custom`
(If all went well, you should be given prompt)
Type: `help`
(If all worked well, you should get long list of commands, beginning:

`Type ' help <subcommand>' for help on a specific subcommand.`

Lets create app:

Run button press the arrow -> `Django Poll -- Custom`
Type: `startapp polls`

Now refresh your project directory from Pydev Package explorer (the tree in the left)
(If all worked well you should now have directory `src/mysite/polls` in your project)

Running the development server
Run button (press the arrow) -> `Django Poll -- Custom`
Type: `runserver --noreload`

(You can use it without `--noreload`, but the console window is rather useless in that case, since Eclipse can't handle the refresh behaviour of ``.)

Other Eclipse preferences (optional), though highly recommended

More run configurations
Since you most likely need's commands `runserver`, `syncdb`, `reset` the most, create own run configurations for those, using similar steps as in " from within Eclipse" section.

Tasks of project

Window -> Show view -> Tasks

Tasks (little `downward triangle` before minimize of tasks window) -> Configure contents
Right side of the window: check `On any element in same project`
Left side of the window: check `TODOs`

No comments: