0

Djangoに自分のWebページで機能するAjaxインタラクションを生成させようとしています。

私はここでdjango-dajaxiceの指示に従いました: http://django-dajaxice.readthedocs.org/en/latest/quickstart.htmlそしてここ: http : //django-dajaxice.readthedocs.org/en/latest/installation .html

ただし、ChromeでそのAjaxコードを実行しようとすると、「undefined」という単語が表示されたダイアログボックスが表示されるだけです。

ところで、これは私がHTMLページからAjaxを呼び出す方法です:

<script type="text/javascript">
    function my_js_callback(data){
        alert(data.message);
    }
</script>

AJAX!!<br/>
<br/>
<input id="myID" type="text" name="myID" maxlength="255" onclick="Dajaxice.example.sayhello(my_js_callback);"/>
<br/>

では、なぜこの未定義のダイアログボックスが表示されるのですか?Chromeのデバッガーを開いたところ、この場合はエラーは表示されません。

ちなみに、上記のインストール手順でurls.pyを変更するように指示された場合、それはあいまいです。私は2つのurls.pyを持っています。1つは私のサイト用で、もう1つは私のアプリケーション用です。私はそれらのステートメントをサイトのurl.pyに入れました。しかし、それが正しいかどうかはわかりませんでした。誰かが確認または拒否できますか?

4

3 に答える 3

4

あなたが引用したインストールとクイックスタートのリファレンスに従うとき、私はdajaxiceの例にも苦労していました。「Dajaxice.exampleが定義されていません」と表示されていましたが、私のエラーは同様でした。

myprojメインの django プロジェクトと、ajax.py ファイルが配置されているインストール済みアプリを呼び出しましょうmyproj/myapp。私のためにそれを機能させるように見えた2つの部分は次のとおりです。

  1. 正しいディレクトリにajax.py ファイルを配置def sayhello(request)し、sayhello 関数に対応する正しいパスを使用します。

    • settings.INSTALLED_APPS にリストされているアプリのいずれかのディレクトリに配置します。
    • インストール済みのアプリ名が"myproj",ajax ファイルとしてリストされている場合myproj/ajax.py、js リファレンスは次のようになります。 Dajaxice.myproj.sayhello(my_js_callback)
    • インストール済みのアプリ名が"myproj.subapp",ajax ファイルのようにリストされている場合myproj/myapp/ajax.py、js 参照は次のようになります。Dajaxice.myproj.myapp.sayhello(my_js_callback) [私はこれを使用しました]
    • {% dajaxice_js_import %}をテンプレート<head>セクション に入れることを忘れないでください

    注: 私の例では、「myapp」を「example」に置き換えて、dajaxice のサンプル コードに一致させることができます。

  2. コードで更新したときに、collectstatic を正しく設定して、新しい /static/dajaxice/dajaxice.core.js ファイルを生成します。

    • あなたが参照した dajaxice readthedocs インストール リンクに記載されているとおりに指示に従いました。
    • settings.py ファイルに STATIC = '/static/ を追加しました
    • INSTALLED_APPSsettings.py ファイルに「django.contrib.staticfiles」を追加
    • を実行python manage.py collectstaticして、すべてのファイルを /static/ ディレクトリにプルしました。これには、生成されたファイルが含まれます/static/dajaxice/dajaxice.core.js
    • このファイルを調べると、sayhello 関数のオブジェクト階層が次のように表示されるはずです:Dajaxice.myproj.sayhelloまたはDajaxice.myproj.myapp.sayhello.

また、 http://www.dajaxproject.com/multiply/の乗算の例を試している場合は、ファイルfunction calculate()の場所を次のいずれかに変更します。ajax.py

<script type="text/javascript" charset="utf-8">
    function calculate(){
        Dajaxice.myproj.myapp.multiply(Dajax.process,{'a':$('#a').val(),'b':$('#b').val()})
    };
</script>

また

<script type="text/javascript" charset="utf-8">
    function calculate(){
  Dajaxice.myproj.multiply(Dajax.process,{'a':$('#a').val(),'b':$('#b').val()})
    };
</script>

<head>セクションに適切な dajax js ファイルを含めます。

   <script src="/static/dajax/jquery.dajax.core.js"></script>

また

  {% static "/static/dajax/jquery.dajax.core.js" %}
于 2013-05-28T10:14:21.627 に答える
1

POSTリクエストを送信していますが、 CSRF ミドルウェアがそれをブロックしている可能性があります。代わりに、GETメソッド デコレータを変更してリクエストを送信します。

@dajaxice_register(method='GET')
def sayhello(request):
    return simplejson.dumps({'message':'Hello World'})
于 2013-02-17T09:31:35.227 に答える
0

私のエラー: クロム (F12) でデバッグを使用します。Dajaxice は使用できますが、Dajaxice.exampleDajaxice.example.sayHelloは定義されていません。

APP の例を settings.py にインストールする必要があります。

http://django-dajaxice.readthedocs.org/en/latest/quickstart.html

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

example/ ajax.pyに注意してください。コードを他のファイルに入れることはできません。

猫の例/ ajax.py

#!/usr/bin/env python
#coding:utf-8
from django.utils import simplejson
from dajaxice.decorators import dajaxice_register


@dajaxice_register()
def sayhello(request):
    return simplejson.dumps({'message':'Hello World'})
于 2013-11-14T05:22:32.153 に答える