[英]How to manipulate CharField as a string Django
我有一個字符字段,用戶在其中輸入一系列數字,這些數字將對應於數字列表。 例如,用戶應該能夠輸入“1、2、3、4、5”或“1-5”,我希望能夠將其轉換為范圍內所有這些數字的列表。 但是,當我在views.py 中獲取該字段的clean_data 時,該值的行為不像字符串。 .split() 不會轉換為列表,並且 for 循環會遍歷單個字符。 如何將字段轉換為可用的字符串?
在views.py中:
def my_view(request):
if request.method == 'POST':
if form.is_valid():
nums = form.cleaned_data['numbers']
nums.split(',')
num_list = []
for item in nums:
if '-' in item:
item.split('-')
for x in range(item[0], item[1]):
num_list.append(x)
else:
num_list.append(item)
如果輸入是“1-160”,我會收到一個錯誤,因為單個字符“-”不能分成兩個項目並被索引。 預期的 num_list 是 1 到 160 之間的所有整數的列表。
如果輸入是 '1,2,3' num_list 是所有字符的列表,而不僅僅是數字。
split()
不能就地工作,它返回一個列表。
這意味着您需要為返回值分配一個變量。
nums = nums.split(',')
def my_view(request):
if request.method == 'POST':
if form.is_valid():
nums = form.cleaned_data['numbers']
nums = nums.split(',')
num_list = []
for item in nums:
if '-' in item:
item.split('-')
for x in range(item[0], item[1]):
num_list.append(x)
else:
num_list.append(item)
nums.split(',')
不轉換nums
的數量,它返回一個字符串列表,所以你應該使用:
def my_view(request):
if request.method == 'POST':
if form.is_valid():
nums = form.cleaned_data['numbers']
# ↓ assign the list, for example to nums
nums = nums.split(',')
num_list = []
for item in nums:
if '-' in item:
item.split('-')
for x in range(item[0], item[1]):
num_list.append(x)
else:
num_list.append(item)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.