【问题标题】:Dajax not working达贾克斯不工作
【发布时间】:2014-11-30 21:35:02
【问题描述】:

Dajax 不工作,我不明白为什么。我正在使用 Django 1.7

我的 ajax.py 文件如下所示:

from dajax.core import Dajax
from dajaxice.decorators import dajaxice_register

@dajaxice_register
def jmc_foundation_tower_number(request, option):

    print("It works!")

我的模板调用如下:

<div class='col-lg-3'>
  <select id='id_tower_number' name='tower_number' onchange="Dajaxice.core.views.jmc_foundation_tower_number(Dajax.process, {'option':$this.value})" onclick="Dajaxice.core.views.jmc_foundation_tower_number(Dajax.process, {'option':$this.value})" class='form-control'>
       {% for tower in towers %}
          <option value='{{ tower }}'>{{ tower }}</option>
       {% endfor %}
   </select>
</div>

我的urls.py如下:

from django.conf.urls import patterns, include, url
from django.contrib import admin

from dajaxice.core import dajaxice_autodiscover, dajaxice_config
dajaxice_autodiscover()


urlpatterns = patterns('',
    url(r'^index$', 'core.views.index', name='index'),

    url(r'^admin/', include(admin.site.urls)),
    url(dajaxice_config.dajaxice_url, include('dajaxice.urls')),

)

【问题讨论】:

    标签: django django-templates dajaxice dajax


    【解决方案1】:

    django-dajaxdjango-dajaxice

    我应该使用 django-dajax 还是 django-dajaxice?

    总之,不。我在 4 年前创建了这些项目,作为一个很酷的工具 为了解决我当时遇到的一个具体问题。

    现在使用这些项目是个坏主意。 (...) 如果你想使用这个项目,你可能错了。你应该 停止将您的界面与您的后端耦合或......从长远来看 它会在你的脸上爆炸。

    jorgebastida/django-dajax

    【讨论】:

      【解决方案2】:

      显然,带有下划线('_')的javascript函数名称在使用像onclick这样的函数时不起作用。最好使用像somefunction()这样的函数而不是some_function()来使Dajax工作。

      【讨论】:

        【解决方案3】:

        以下是使用 dajax 制作 Helloworld 的示例

        models.py:

         from django.db import models
         from dajax.core import Dajax
         from dajaxice.decorators import dajaxice_register
         @dajaxice_register
         def say_hello(request,value):
            dajax = Dajax()
            dajax.alert(value)
            return dajax.json()
        

        urls.py:

        urlpatterns = patterns('',
            # Examples:
            url(r'^$', 'server.views.index', name='index'),
        

        server.views.index 中的“server”是项目中的应用程序名称

        在 index.html 文件中,您必须使用 jquery 函数来调用此 dajax 请求,如下所示 index.html:

         <html>
            <script>
              function print_helloworld(){
                        var value = Dajaxice.server.models.say_hello(Dajax.process,{'value':'Hello World!'});
                    }
            </script>
            <body>
               <button id='mybtn' class='btn btn-primary' onclick='print_helloworld()'>Hello World</button>
            </body>
         </html>
        

        如果您需要从公共 ip 访问索引文件,您必须在按钮前添加 {% csrf_token %} 标记

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-05
          • 2013-09-19
          • 2012-07-22
          相关资源
          最近更新 更多