Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
Django v2和x2B;用于处理csv的自定义路径转换器的正则表达式_Django_Django Urls - Fatal编程技术网

Django v2和x2B;用于处理csv的自定义路径转换器的正则表达式

Django v2和x2B;用于处理csv的自定义路径转换器的正则表达式,django,django-urls,Django,Django Urls,注意:在发布之前,我已经搜索了csv正则表达式。到目前为止,我为csv找到的最好的正则表达式可以在答案中找到 我想创建一个用于处理csv的自定义路径转换器,例如: register_converter(CSVConverter, 'csv') urlpatterns = [ ... path('csv/<csv:list_of_values>/', views.csv_view, name='csv_view'), ... ] 我尝试了以下方法: cla

注意:在发布之前,我已经搜索了csv正则表达式。到目前为止,我为csv找到的最好的正则表达式可以在答案中找到


我想创建一个用于处理csv的自定义路径转换器,例如:

register_converter(CSVConverter, 'csv')

urlpatterns = [
    ...
    path('csv/<csv:list_of_values>/', views.csv_view, name='csv_view'),
    ...
]
我尝试了以下方法:

class CSVConverter:
    # see https://stackoverflow.com/a/48806378/5623899
    regex = "(?:,|\n|^)(\"(?:(?:\"\")*[^\"]*)*\"|[^\",\n]*|(?:\n|$))"

    def to_python(self, value):
        return value.split(',')

    def to_url(self, value):
        return ','.join(value)

但这不起作用…

除非我遗漏了什么,否则您不需要复杂的正则表达式。您只需捕获任何不包含斜杠的字符串(
/
),拆分由
to_python()
处理。您只需使用内置的正则表达式:

或者,您也可以子类化
StringConverter

from django.urls.converters import StringConverter

class CSVConverter(StringConverter):

    def to_python(self, value):
        return value.split(',')

    def to_url(self, value):
        return ','.join(value)

没错,我肯定是想得太多了!
class CSVConverter:
    regex = '[^/]+'

    def to_python(self, value):
        return value.split(',')

    def to_url(self, value):
        return ','.join(value)
from django.urls.converters import StringConverter

class CSVConverter(StringConverter):

    def to_python(self, value):
        return value.split(',')

    def to_url(self, value):
        return ','.join(value)