Django v2和x2B;用于处理csv的自定义路径转换器的正则表达式
注意:在发布之前,我已经搜索了csv正则表达式。到目前为止,我为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的自定义路径转换器,例如:
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)