Django seldom uses SQL. It uses python class to access DB.
Pros. You can apply one code to various types of DB.
In django database,
- Data type is equal to table.
- Class member is like a table field.
Designing data model
Create data type(table) in ur sampleapp/models.py
<models.py>
from django.db import models
class SampleTable(models.Model):
fieldA = models.IntegerField(unique=True)
<eof>
Like IntegerField, there are also pre-defined field.
- TextField, DateTimefield, EmailField, URLField, FileField
Creating data type
Check if you activated your application in settings.py.
<settings.py>
INSTALLED_APPS = (
...
'sampleproject.sampleapp',
)
<eof>
Do DB sync
> ./manage.py syncdb
You can see which SQL were generated with,
> ./manage.py sql sampleapp
Note that it generate 'id' field automatically when it makes table.
Using DB Shell
Like we use database console to execute SQLs in terminal,
django also has shell.
> ./manage.py shell
>>> from sampleapp.models import *
>>> record = SampleTable(fieldA=123)
>>> record.fieldA
123
>>> record.save()
>>> records = SampleTable.objects.all()
>>> firstRecord = SampleTable.objects.get(id=1)
>>> record.delete()
Like above, you can create a record, save it into DB, get all records or single one, access by id and delete it.
Note that until you save(), it just remain only in memory.
User data model
'User' data model is already built in.
>>> from django.contrib.auth.models import User
>>> User.objects.all()
User has many attributes like username, email and password.
Friday, July 10, 2009
Thursday, July 9, 2009
Using django - beginning
Installing
> sudo apt-get install python-django
Start project
> django-admin startproject sampleproject
Then, directory sampleproject is created.
You can run test server using manage.py in the directory.
You can set details using setting.py.
You can set urls using urls.py
Setting DB(ex. SQLite)
Edit setting.py.
- Set DATABASE_NAME, DATABASE_ENGINE
Then create DB.
> ./manage.py syncdb
- Chose if you will set superuser account.
Run server
> ./manage.py runserver
Check it with url 'http://localhost:8000/'
(8000 is default.)
Create application
In one project, you can have several web-applications. Django calls it as applications.
Create with commands,
> ./manage.py startapp sampleapp
Directory sampleapp is then generated.
Application is recommended to be designed with MVC model.
In sampleapp directory,
You can define http request handler function in the file views.py
Implementing handler
Example,
<views.py>
from django.http import HttpResponse
def main(request):
output = "<html>Welcome!</html>"
return HttpResponse(output)
<eof>
'request' has many informations about current requests.
<urls.py>
from sampleapp.views import *
...
urlpatterns = patterns('',
(r'^$', main)
)
<eof>
In 'r'^$', r means regular expression, ^ is first of uri and $ stands for the last.
So it means '/' actually. Function main has been set as a handler for '/' above.
Now, check your first page with browser using 'http://localhost:8000/'. Good job!
Regular expressions
You can use expressions like below
. ^ $ * + ? | [a-z] \w \d
\w means alphabet or '_'
\d means one letter digit.
> sudo apt-get install python-django
Start project
> django-admin startproject sampleproject
Then, directory sampleproject is created.
You can run test server using manage.py in the directory.
You can set details using setting.py.
You can set urls using urls.py
Setting DB(ex. SQLite)
Edit setting.py.
- Set DATABASE_NAME, DATABASE_ENGINE
Then create DB.
> ./manage.py syncdb
- Chose if you will set superuser account.
Run server
> ./manage.py runserver
Check it with url 'http://localhost:8000/'
(8000 is default.)
Create application
In one project, you can have several web-applications. Django calls it as applications.
Create with commands,
> ./manage.py startapp sampleapp
Directory sampleapp is then generated.
Application is recommended to be designed with MVC model.
In sampleapp directory,
You can define http request handler function in the file views.py
Implementing handler
Example,
<views.py>
from django.http import HttpResponse
def main(request):
output = "<html>Welcome!</html>"
return HttpResponse(output)
<eof>
'request' has many informations about current requests.
<urls.py>
from sampleapp.views import *
...
urlpatterns = patterns('',
(r'^$', main)
)
<eof>
In 'r'^$', r means regular expression, ^ is first of uri and $ stands for the last.
So it means '/' actually. Function main has been set as a handler for '/' above.
Now, check your first page with browser using 'http://localhost:8000/'. Good job!
Regular expressions
You can use expressions like below
. ^ $ * + ? | [a-z] \w \d
\w means alphabet or '_'
\d means one letter digit.
Wednesday, July 8, 2009
Disable firefox disk cache
Enter about:config in search bar.
set browser.cache.disk.enable as "false"
set browser.cache.disk.enable as "false"
set browser.cache.disk.capacity as "0"
set browser.cache.memory.capacity (ex. 14336 (256M))
Friday, June 19, 2009
Howto install python and mod_python on linux
Installing Python
If you want to install it onto custom directory, for example like /home/you/opt/Python
Get python sources from python.org
Untar it.
./configure --prefix=/home/you/opt/Python --exec-prefix=/home/you/opt/Python --enable-shared
make; make install;
Installing mod_python
Get mod_python from here http://httpd.apache.org/modules/python-download.cgi
Untar it.
./configure --prefix=/home/you/opt/mod_python --exec-prefix=/home/you/opt/mod_python --with-apxs=/home/you/opt/httpd/bin/apxs --with-python=/home/you/opt/Python/bin/python
# because normal 'make install' needs 'su' access,
make; make install_dso; make install_py_lib
add below configurations into httpd.conf
If you want to install it onto custom directory, for example like /home/you/opt/Python
Get python sources from python.org
Untar it.
./configure --prefix=/home/you/opt/Python --exec-prefix=/home/you/opt/Python --enable-shared
make; make install;
Installing mod_python
Get mod_python from here http://httpd.apache.org/modules/python-download.cgi
Untar it.
./configure --prefix=/home/you/opt/mod_python --exec-prefix=/home/you/opt/mod_python --with-apxs=/home/you/opt/httpd/bin/apxs --with-python=/home/you/opt/Python/bin/python
# because normal 'make install' needs 'su' access,
make; make install_dso; make install_py_lib
add below configurations into httpd.conf
LoadModule python_module modules/mod_python.soRestart httpd. It'll works.
<Directory [absolute path]>
AddHandler mod_python .py
PythonHandler test
PythonDebug On
</Directory>
Thursday, June 18, 2009
Terminal login message and broadcasting message
Login message : /etc/motd
Broadcast message : use 'wall' command
Broadcast message : use 'wall' command
MySQL Installing DB and setting password
Before starting server, you need to install database to use.
./mysql_install_db --datadir=<path where db is installed> --user=<dbuser>
Now, you can start server.
./bin/mysqld_safe --user=<user> --port=<dbport> --socket=<sockfile path> --datadir=<path where db is installed> &
As a default, root user can login without password on console. This should be changed.
mysql> delete from mysql.user where user = '' ; # disable anonymous login
mysql> set password for 'root'@'localhost' = password('<root password>'); # set root password
./mysql_install_db --datadir=<path where db is installed> --user=<dbuser>
Now, you can start server.
./bin/mysqld_safe --user=<user> --port=<dbport> --socket=<sockfile path> --datadir=<path where db is installed> &
As a default, root user can login without password on console. This should be changed.
mysql> delete from mysql.user where user = '' ; # disable anonymous login
mysql> set password for 'root'@'localhost' = password('<root password>'); # set root password
Thursday, June 11, 2009
The way to program smartly.
Don't stick to one methodology.
Things should be done as simply as possible.
They don't read documents. Make it simple as possible.
Requirements always changes.
We don't need to fix tools or process. What we should matter is people.
Organize your team less than 10.
Don't draw all detail architecture. Just draw the big picture.
Things should be done as simply as possible.
They don't read documents. Make it simple as possible.
Requirements always changes.
We don't need to fix tools or process. What we should matter is people.
Organize your team less than 10.
Don't draw all detail architecture. Just draw the big picture.
Subscribe to:
Posts (Atom)