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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


在使用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.οnclick="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

 

 

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: go