• 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

     

     

     

  • 相关阅读:
    .net 实现 URL重写,伪静态
    jquery上传插件AjaxUpload使用示例
    事实上
    C# DataSet和DataTable详解
    当你累了,准备放弃时,看看这个吧!!!
    asp.net页面数据传递总结
    在Global.asax中根据请求路径判断是否可以访问。。。我没思路只好这样了
    今儿改的
    C 语言利用数组实现大数计算
    开始学习 类
  • 原文地址:https://www.cnblogs.com/Jghost/p/3596604.html
Copyright © 2020-2023  润新知