Jghost

jeiao, In me the tiger sniffs the rose !

导航

django1.6 django-dajaxice的安装配置.

django-dajaxice的安装配置.

在使用django1.6做项目时,用到了界面上的ajax请求, 由于django的csrf的原因 使用传统的jquery的ajax ,非常不方便,

强大的django,怎么能没有解决方法,这里提供一个比较好的插件, django-dajaxice

下面讲述下关于这个插件的安装配置:

1,安装:

使用pip安装:

 sudo pip install django_dajaxice

2.配置settings.py:

2.1,在你的project中的settings.py 中的INSTALLED_APPS中加入dajaxice

INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.sites',
        'dajaxice',
        ...
)

2.2,在TEMPLATE_LOADERS中增加'django.template.loaders.eggs.Loader',

 

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
    'django.template.loaders.eggs.Loader',
)

2.3, 在TEMPLATE_CONTEXT_PROCESSORS 中确认有 django.core.context_processors.request

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.core.context_processors.static',
    'django.core.context_processors.request',
    'django.contrib.messages.context_processors.messages'
)

2.4,增加 dajaxice.finders.DajaxiceFinder 在 STATICFILES_FINDERS:

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'dajaxice.finders.DajaxiceFinder',
)

 

ps:TEMPLATE_LOADERS和TEMPLATE_CONTEXT_PROCESSORS 在默认的settings.py配置里没有,这里直接粘贴复制就行

 

3.配置URLS

3.1 导入一下models
from dajaxice.core import dajaxice_autodiscover, dajaxice_config
dajaxice_autodiscover()

   3.2 增加url

urlpatterns = patterns('',
    ...
    url(dajaxice_config.dajaxice_url, include('dajaxice.urls')),
    ...
)

ps:

If you aren’t using django.contrib.staticfiles, you should also enable it importing:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

and adding this line to the bottom of your urls.py:

urlpatterns += staticfiles_urlpatterns()

 

4.配置模版

  

{% load dajaxice_templatetags %}

<html>
  <head>
    <title>My base template</title>
    ...
    {% dajaxice_js_import %}
  </head>
    ...
</html>

 

5,测试

在项目下建立一个ajax.py,

import json

def sayhello(request):
    return json.dumps({'message':'Hello World'})

然后在模版html中:

            <script>
                        function my_callback(data){
                            alert(data.message);
                        }
                    </script>
                    <input type="button" onclick="Dajaxice.oak.sayhello(my_callback)" value="Get message from server!">

 

 

在这个过程中出现的问题以及解决方法:

1.web界面报错:ImportError:No module named defaults

Exception Value:
No module named defaults
Exception Location: /usr/local/lib/python2.7/dist-packages/dajaxice/urls.py in <module>, line 1

 

 

这是因为在dajaxice的源代码中导入有误,这个问题我在github上issue 看到解决方法:

将dajaxice源代码中/usr/local/lib/python2.7/dist-packages/dajaxice/urls.py文件中的

from django.conf.urls.defaults import * 

改为:

from django.conf.urls import * 

可解决问题.

2.onclick="Dajaxice.oak.sayhello(my_callback)" 这个oak哪里的

看我下面的项目部分结构图:

oakcloud/
├── db.sqlite3
├── manage.py
├── oak
│   ├── account.py
│   ├── account.pyc
│   ├── admin.py
│   ├── admin.pyc
│   ├── ajax.py
│   ├── ajax.pyc
│   ├── classes.py
│   ├── classes.pyc
│   ├── forms.py
│   ├── forms.pyc
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── models.py
│   ├── models.pyc
│   ├── network.py
│   ├── network.pyc
│   ├── plugins
│   │   ├── __init__.py
│   │   ├── __init__.pyc
│   │   └── network
│   │   ├── __init__.py
│   │   ├── __init__.pyc
│   │   ├── methods.py
│   │   ├── methods.pyc
│   │   ├── models.py
│   │   └── models.pyc
│   ├── tests.py
│   ├── urls.py
│   ├── urls.pyc
│   ├── utils.py
│   ├── utils.pyc
│   ├── views.py
│   └── views.pyc
├── oakcloud
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   ├── urls.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
├── static

 

 

 

至此,对django-dajaxice的配置就完成了,能够正常使用了,如果大家想了解更多有关django-dajaxice的功能,可以访问它的官方网站获取更多内容.附:http://www.dajaxproject.com/#dajaxice

 

 

 

posted on 2014-03-12 16:25  Jghost  阅读(1036)  评论(0编辑  收藏  举报