Python:'unicode'对象没有属性'append'

时间:2017-01-18 01:59:19

标签: python django

我正在使用Django而我正在尝试创建一个函数来存储request.session中访问过的页面的名称。但是我一直得到错误“'unicode'对象没有属性'append'”在我尝试将变量附加到request.session['visited_pages']的行上我在网上搜索了,我没有找到解决问题的任何东西,我确实发现你无法直接附加到request.session['visited_pages'],而是必须创建一个单独的数组。我做到了但这并没有解决我的问题。这是我的代码:

def index(request):
    visited_pages = get_visited_pages(request)
    context = {
        "visited_pages": visited_pages
    }
    return render(request, 'website/index.html', context)

def get_visited_pages(request):
    current_url = resolve(request.path_info).url_name

    if not 'visited_pages' in request.session or not request.session['visited_pages']:
        request.session['visited_pages'] = current_url
    else:
        visited_pages_array = request.session['visited_pages']
        visited_pages_array.append(current_url)
        request.session['visited_pages'] = visited_pages_array

    return request.session['visited_pages']

1 个答案:

答案 0 :(得分:2)

您需要替换以下行:

request.session['visited_pages'] = current_url

使用:

request.session['visited_pages'] = [current_url]

以便会话中的visited_pages项是list而不是unicode对象。

您还需要修改任何依赖或调用get_visited_pages的代码,因为我们已将返回值从unicode更改为list