如何在UTF8中传递Django中的GET参数

2024-04-26 10:04:43 发布

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

我想在用Django呈现视图时传递一个GET参数。我的代码如下:

class CustomerList(ListView):
    model = Customer
    template_name = 'management/customer_list.html'

    def get(self, request):
        search_text = request.GET.get('search_text', '') # check if search_text exists
        query = Q(name__icontains=search_text) | Q(phone_number__icontains=search_text)
        object_list = self.model.objects.filter(query).order_by('-regdate', '-id')
        if object_list.count() == 0:
            response = redirect('management:customer-create')
            response['Location'] += '?name=%s' % (search_text)
            return response

        context = {
            'object_list':object_list,
            'search_text':search_text,
            'count':self.model.objects.count()
        }
        return render(request, self.template_name, context)

生成的url如下所示:

/customer/=?utf-8?b?L2N1c3RvbWVyL2NyZWF0ZS8/bmFtZT3tmY3quLjrj5k=?=

未找到页面错误

你觉得我做错什么了?在


Tags: textnameselfsearchgetmodelobjectresponse
1条回答
网友
1楼 · 发布于 2024-04-26 10:04:43

从评论中我找到了解决方案,那就是使用urlencode()。在

if object_list.count() == 0:
    from django.http import QueryDict
    response = redirect('management:customer-create')
    q = QueryDict(mutable=True)
    q['name'] = search_text
    query_string = q.urlencode() # encodes utf8 string also
    response['Location'] += '?%s' % (query_string)
    return response

相关问题 更多 >