1

テーブルの更新に dajaxice を使用しようとしましたが、エラーが表示されます。

トレースバック:

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/bank/index1/

Django Version: 1.5.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'meli',
 'django_tables2',
 'dajaxice',
 'django_jalali')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  187.                 response = middleware_method(request, response)
File "/usr/lib/python2.7/site-packages/django/contrib/sessions/middleware.py" in process_response
  26.                 patch_vary_headers(response, ('Cookie',))
File "/usr/lib/python2.7/site-packages/django/utils/cache.py" in patch_vary_headers
  142.     if response.has_header('Vary'):

Exception Type: AttributeError at /bank/index1/
Exception Value: 'str' object has no attribute 'has_header'

これは私の見解です:

def index1(request):

    data = MelliTable(ModelMelli.objects.filter(check=False))
    RequestConfig(request, paginate={'per_page': 20}).configure(table)
    table = render_to_string('meli/index.html', {'data': data })
    return simplejson.dumps({'table':table})
dajaxice_functions.register(index1)

そして私のjsは:

<script>
function my_callback(data){
    if(data!=Dajaxice.EXCEPTION){
        document.getElementById('test').innerHTML = data.table;
    }
    else{
        alert('Error');
    }
}
</script>
4

2 に答える 2

1

django-dajaxiceindex1ここでは、コード内でビュー関数を特別なハンドラーでラップすることで機能します。の代わりに動的に一致する URL を介してそれらを提供します/bank/index1/
したがって、 の urlpattern を定義する必要はありません/bank/index1/。おそらくここでDajaxice インターフェースindex1を介してアクセスするだけです。Dajaxice.bank.index1(my_callback)

このエラーは、通常の Django ビューがHttpResponse()インスタンスを返すことが期待されているのに対しindex1、ここでは文字列を返すことが期待されているために発生しました (dajaxice インターフェースを介して呼び出すと、上記の特別なハンドラーが文字列をHttpResponsew/o 問題に置きます) 。

于 2013-06-25T13:55:12.510 に答える
0

ビューを変更し、dajaxice 関数を ajax.py に配置します。これは、それを呼び出すための私の js です。

<script>
function setupRefresh() {
    setTimeout("Dajaxice.meli.refresh(my_callback)", 5000); // milliseconds
}
</script>

スクリプトがコンソールで私の djaxice を呼び出すのを見ることができますが、テーブルを変更するために my_callback js 関数に何を書くべきかわかりません!

5/Jun/2013 23:25:43] "POST /dajaxice/meli.refresh/ HTTP/1.1" 200 2580
[25/Jun/2013 23:25:48] "POST /dajaxice/meli.refresh/ HTTP/1.1" 200 2580
[25/Jun/2013 23:25:53] "POST /dajaxice/meli.refresh/ HTTP/1.1" 200 2580
[25/Jun/2013 23:25:58] "POST /dajaxice/meli.refresh/ HTTP/1.1" 200 2580
[25/Jun/2013 23:26:03] "POST /dajaxice/meli.refresh/ HTTP/1.1" 200 2580

見る:

def index2(request):

    table = MelliTable(ModelMelli.objects.filter(check=True))

    #table.paginate(page=request.GET.get('page', 1), per_page=4)
    RequestConfig(request, paginate={'per_page': 20}).configure(table)
    return render(request, 'meli/index1.html', {'table': table })

アヤックス:

def refresh(request):
    message = ""
    table = MelliTable(ModelMelli.objects.filter(check=True))
    RequestConfig(request, paginate={'per_page': 20}).configure(table)
    table1 = render_to_string('meli/index.html', {'table': table, 'message': message })
    return simplejson.dumps({'table1':table1})

dajaxice_functions.register(refresh)

私のテンプレートは次のとおりです。

{% extends "meli/base.html" %}
{% load render_table from django_tables2 %}
{% block content %}
<script>
function setupRefresh() {
    setTimeout("Dajaxice.meli.refresh(my_callback)", 5000); // milliseconds
}
</script>

            {% render_table table %}            
{% endblock %}
于 2013-06-26T04:27:44.517 に答える