dajaxice错误“str”对象没有属性“has_header”

2024-04-19 12:21:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用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'

这是我的观点:

^{pr2}$

我的js是:

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

Tags: djangoinpydataresponselibpackagesusr
2条回答

django-dajaxice的工作原理是用特殊的处理程序包装视图函数,这里是代码中的index1;并通过动态匹配的URL而不是/bank/index1/来提供这些函数。
因此,您不必为index1定义urlpattern/bank/index1/,只需通过Dajaxice interface访问它,也许在这里是Dajaxice.bank.index1(my_callback)。在

这个错误是由于一个普通的Django视图应该返回一个HttpResponse()实例,而index1在这里返回一个字符串(当您通过dajaxice接口调用时,上面提到的特殊处理程序会将该字符串放入HttpResponsew/o问题)

我修改我的视图并将dajaxice函数阿贾克斯.py这是我的名字:

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

我可以在控制台中看到脚本调用我的djaxice,但我不知道应该在我的_callback js函数中写入什么来更改表!在

^{pr2}$

视图:

^{3}$

阿贾克斯:

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 %}

相关问题 更多 >