Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python url查询中的空格未在django中解码_Python_Django_Django Rest Framework - Fatal编程技术网

Python url查询中的空格未在django中解码

Python url查询中的空格未在django中解码,python,django,django-rest-framework,Python,Django,Django Rest Framework,我有以下URL查询- http://localhost:8000/api/passenger-census/?public_location_description==SW%206th%20&%20Salmon 但是,这些空间没有被解码,django解析的结果查询是 GET /api/passenger-census/?public_location_description=SW%206th%20&%20Salmon 它返回一个null,因为要找到的字符串是“SW 6th&S

我有以下URL查询-

http://localhost:8000/api/passenger-census/?public_location_description==SW%206th%20&%20Salmon
但是,这些空间没有被解码,django解析的结果查询是

GET /api/passenger-census/?public_location_description=SW%206th%20&%20Salmon
它返回一个
null
,因为要找到的字符串是“SW 6th&Salmon”

Django代码

views.py
-

class PassengerCensusViewSet(viewsets.ModelViewSet):

    queryset = PassengerCensus.objects.all()
    serializer_class = PassengerCensusSerializer
    filter_backends = (SearchFilter,DjangoFilterBackend,OrderingFilter,)
    search_fields = ('route_number', 'direction','service_key','stop_seq',
                     'location_id','public_location_description',)
    filter_fields = ('summary_begin_date','route_number','direction','service_key','stop_seq','location_id',
                    'public_location_description','ons','offs','x_coord','y_coord','geom_2913','geom_4326',)
    ordering_fields = '__all__'

serializer.py

class PassengerCensusSerializer(serializers.ModelSerializer):

    class Meta:
        model = PassengerCensus
        fields = '__all__'


这里有什么问题?

空格不是问题,你的符号是问题所在。 符号AND是不同参数之间的分隔符,这些参数是名称=值对

分析查询字符串会导致:

public\u location\u description的名称
,值为
=SW%206th%20

%20Salmon
没有值

%26
(并删除多余的“=”)替换您的“与”,以获得以下url:


然后再试一次

空格不是问题,你的符号才是问题所在。 符号AND是不同参数之间的分隔符,这些参数是名称=值对

分析查询字符串会导致:

public\u location\u description的名称
,值为
=SW%206th%20

%20Salmon
没有值

%26
(并删除多余的“=”)替换您的“与”,以获得以下url:


然后再试一次

您有多确定问题不是未替换的符号和?您的参数编码错误。查询字符串参数(与路径元素相反)应通过将空格替换为
+
,而不是
%20
,来进行编码。您有多大把握问题不是未替换的符号和?您的参数编码错误。查询字符串参数(与路径元素相反)应通过将空格替换为
+
,而不是
%20
来编码。当用户在查询参数中输入“&”时,如何让Django自动转义一个符号?URL不是为人工输入而创建的。这就是HTML表单的用途。当用户在查询参数中输入“&”时,如何让Django自动转义一个符号和?URL不是人为输入的。这就是HTML表单的用途。