Django-nonrel with mongoDB
Hi friends ,
I'm working with Borgets Solution.
Recently I made a simple application on Django-nonrel with backend mongoDB.
Django-nonrel is an independent branch of Django that adds NoSQL database support to the ORM.Read more about the django-nonrel Django-Nonrel ...
I feel its somewhere bit complex to configure mongodb as backend on "Django-Nonrel" and make "Django-Administration" working.
lets start.
If you like to use Virtual-environment , then you can use it . Install pymongo
You need setuptools for installing pymongo , dont worry dunring installation of Pymongo , autamatically setuptools should be downloaded .
Install djangotoolbox
Install Django-nonrel
Install django-mongodb-engine
Phew !!! .. finally we completed .... :)
create new django Project
create new django application
Configuration
Database setup is easy as native django with sqlite3. Open "settings.py" and setup database "mongodb_engine".
Lets start mongodb engine
Run server
Yeah,Now start developing your application as other databases.Here I'm not going to teach in details.please read "django docs"
Open "settings.py" and add "django.contrib.admin" in INSTALLED_APPS.
Open "urls.py" and "uncomment the lines to enable django administration"
Here is my "models.py" .
create "admin.py" in application directory and register the models in django admin.
It will works without "django site".
Django Site registration
For more information visit django's documentation for The "Site" framework
Open "settings.py" and set SITE_ID for django_site(django administration).
Note :
Default SITE_ID is "1".That's for SQL based databases,but NoSql based DB generates Alphanumeric object Id.so we need to set that id here.
Open terminal and write.(for mongoDB)
now,copy "id={}" and set SITE_ID="xxxxxxxxx" in "settings.py".
Download Django_bookmark code
Thanking You !!!
Django-nonrel is an independent branch of Django that adds NoSQL database support to the ORM.Read more about the django-nonrel Django-Nonrel ...
I feel its somewhere bit complex to configure mongodb as backend on "Django-Nonrel" and make "Django-Administration" working.
lets start.
Installation
If you like to use Virtual-environment , then you can use it . Install pymongo
You need setuptools for installing pymongo , dont worry dunring installation of Pymongo , autamatically setuptools should be downloaded .
-
Download pymongo
extract pymongo.tar.gz folder and install . ashish@developer:~/Downloads $ tar -xzvf pymongo
.tar.gz ashish@developer:~/Downloads $ cd pymongo ashish@developer:~/Downloads/pymongo $ sudo python setup.py install -
or you can use
$ easy_install pymongo
Install djangotoolbox
-
Download SourceCode of djangotoolbox and extract it > DjangoToolBox
extract django-toolbox zip file and install .ashsih@developer:~/Downloads$ unzip wkornewald-djangotoolbox-
.zip ashsih@developer:~/Downloads$ cd wkornewald-djangotoolbox- ashsih@developer:~/Downloads/wkornewald-djangotoolbox- $ sudo python setup.py install
Install Django-nonrel
-
Download SourceCode of Django-Nonrel and extract it > Django-Nonrel
ashsih@developer:~/Downloads $ unzip wkornewald-django-nonrel-
.zip ashsih@developer:~/Downloads $ cd wkornewald-django-nonrel- ashsih@developer:~/Downloads/wkornewald-django-nonrel- $ sudo python setup.py install
-
Download MongoDB from official site of MongoDB and extract the Tar.gz package .
I am using 32-bit . please prefer MongoDB installation on Linuxashsih@developer:~/Downloads$ tar -xzvf mongodb-linux-
.tgz ashsih@developer:~/Downloads$ cd mongodb-linux- -
Create a data directory
You can also tell MongoDB to use a different data directory, with the --dbpath option.$ sudo mkdir -p /data/db/ $ sudo chown `id -u` /data/db
Run and connect to the server make sure that you are in MongoDB package folder .ashsih@developer:~/Downloads$ cd mongodb-linux-
/bin/ ashsih@developer:~/Downloads/mongodb-linux- /bin/ $ ./mongod
Install django-mongodb-engine
-
Download source code of django-mongodb-engine from here > Django-MongoDB-Engine and extract it .
ashish@developer:~/Downloads$ unzip django-nonrel-mongodb-engine-
.zip ashish@developer:~/Downloads$ cd django-nonrel-mongodb-engine- ashish@developer:~/Downloads/django-nonrel-mongodb-engine- $ sudo python setup.py install
Phew !!! .. finally we completed .... :)
Let's start developing Django applcation
create new django Project
$ django-admin.py startproject djangobookmarks
$ cd djangobookmarks/ && python manage.py runserver
Open your browser and check > "localhost:8000" address
create new django application
$ django-admin.py startapp bookmarks
Configuration
Database setup is easy as native django with sqlite3. Open "settings.py" and setup database "mongodb_engine".
DATABASES = {
'default': {
'ENGINE': 'django_mongodb_engine', # Add 'postgresql', 'mysql', 'sqlite3' etc.
'NAME': 'newdb', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': 'localhost', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '27017', # Set to empty string for default. Not used with sqlite3.
}
}
Lets start mongodb engine
$mongod
$mongo
Run server
$python manage.py runserver
Yeah,Now start developing your application as other databases.Here I'm not going to teach in details.please read "django docs"
Django Admin Activation.
If you want to use Django Administration,Than it is bit tricky..Open "settings.py" and add "django.contrib.admin" in INSTALLED_APPS.
INSTALLED_APPS = (
...default apps...
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin doc.:
# 'django.contrib.admindocs',
'bookmarks',
)
Open "urls.py" and "uncomment the lines to enable django administration"
from django.conf.urls.defaults import *
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
from bookmarks.views import *
urlpatterns = patterns('',
.....
# Uncomment the next line to enable the admin:
(r'^admin/', include(admin.site.urls)),
)
Here is my "models.py" .
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Link(models.Model):
url=models.URLField(unique=True)
def __unicode__(self):
return self.url
Bookmark(models.Model):
title=models.TextField(max_length=100)
user=models.ForeignKey(User)
link=models.ForeignKey(Link)
def __unicode__(self):
return self.title
create "admin.py" in application directory and register the models in django admin.
#!/usr/bin/env python
from django.contrib import admin
from bookmarks.models import Link,Bookmark #Models
admin.site.register(Link)
admin.site.register(Bookmark)
It will works without "django site".
Django Site registration
For more information visit django's documentation for The "Site" framework
Open "settings.py" and set SITE_ID for django_site(django administration).
Note :
Default SITE_ID is "1".That's for SQL based databases,but NoSql based DB generates Alphanumeric object Id.so we need to set that id here.
Open terminal and write.(for mongoDB)
$mongoexport -d (database_name) -c django_site
#example
$mongoexport -d mydatabase -c django_site
now,copy "id={}" and set SITE_ID="xxxxxxxxx" in "settings.py".
SITE_ID = '4dbea69bc9ce44192b00001d'
$python manage.py mongod
$python manage.py syncdb
$python manage.py runserver
Download Django_bookmark code
Thanking You !!!