So I try to upgrade my project to use Django 1.6 .
What I found is some setting that change, and to specific to note in the django Documentation. So I make notes on what have change and need to adjust in my django app configuration.
manage.py
The manage.py files. Now start from Django 1.4 there was a major change. One of the aim was to overcome the double import file in python.
The recommended manage.py are :
#!/usr/bin/env python import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ p_name }}.settings") from django.core.management import execute_from_command_line execute_from_command_line(sys.argv)
Here you change the {{ p_name }} to your project folder. And the manage.py should be move up one level of the project folder.
So the layout should be :
project
|--Blogs
|-- urls.py
|-- settings.py
|-- models.py
|-- views.py
|-- manage.py
urls.py
The urls.py import change. In Django1.3 we use :
from django.conf.urls.defaults import patterns, include, urlNow starting Django 1.4 there were no more defaults in urls. So we change to :
from django.conf.urls import patterns, include, url
To make it compatible with previous version of Django1.4 you can use try block :
try: from django.conf.urls.defaults import patterns, include, url # django1.3 support except: from django.conf.urls import patterns, include, url
settings.py
If you implement the resusable app concept, your settings will have some application level configuration variable in the project settings.py which you can access from application via settings.import . But after Django1.4 all change.
If your application need access configuration variable in settings.py , this what you should change:
from settings import RESULTS_PER_PAGE , SITE_NAME, SITE_DESCRIPTION
To new way :
from django.conf import settings RESULTS_PER_PAGE = settings.RESULTS_PER_PAGE SITE_NAME = settings.SITE_NAME SITE_DESCRIPTION = settings.SITE_DESCRIPTION
if you want to keep compatibility with < Django1.4 :
try: from settings import RESULTS_PER_PAGE , SITE_NAME, SITE_DESCRIPTION except: from django.conf import settings RESULTS_PER_PAGE = settings.RESULTS_PER_PAGE SITE_NAME = settings.SITE_NAME SITE_DESCRIPTION = settings.SITE_DESCRIPTION
And another thing to change in settings.py in TEMPLATE_CONTEXT_PROCESSOR section :
# old TEMPLATE_CONTEXT_PROCESSORS = ("django.core.context_processors.auth", ) # new TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth", )
So the change I found out only :
- Manage.py file location
This change the whole config and directory layout of a project - URLS import in urls.py
No more django.conf.urls.defaults , change to django.conf.urls - Import Settings Variable
Need other way to import settings variable. What I learn that any reusable app should not depends on the project settings.This give a loose app and project relationship.
And the result, I bumped with more configuration that had to change, like the context processor utils?
I decide to roll back, and better use the new Django1.6 with new project anyway.
And maybe should upgrade 1.3 to 1.4 first.
Updates :
I try again and bumped with the context processor utils, the problem was the django.conf import. I use import settings for load all the default knob in my application, now i use :
I try again and bumped with the context processor utils, the problem was the django.conf import. I use import settings for load all the default knob in my application, now i use :
from django.conf import settings
Now my apps run in django 1.4 . Next will be upgrade to django 1.5 and I will posting my findings.
0 comments:
Post a Comment