将Django CharField拆分为好像它是一个字符串

时间:2016-08-25 17:26:23

标签: django django-forms

我将用户输入带入Textarea小部件,然后逐行循环,并尝试拆分三个"单词" (第一个名字,姓氏,电子邮件)从每一行到一个列表,我稍后会处理。但是当我在线上使用split()时,它总是分成字符,我假设它是字段的CharField def的一部分,这意味着它不是字符串而是split()方法不会像我想要的那样表现出来。编辑:即使for构造失败 - 它正在分析每个角色,而不是每条线。

该解决方法是什么?

class UserImportForm(forms.Form):
    importtext = forms.CharField(required=True,widget=forms.Textarea(attrs={'cols': 40, 'rows': 15}))


elif "UserImport" in request.POST:
    g = UserImportForm(request.POST, prefix='usrimp')
    rawtext = g['importtext'].value()
    if g.is_valid():
        newusers = []
        for lines in rawtext:
            row = lines.split(" ")

            if len(row) == 3 and validate_email(row[2]):
                newusers.append(row)

1 个答案:

答案 0 :(得分:0)

虽然这可能不是最好的方法,但这就是我最终要做的事情。仍然欢迎更好的答案!

    elif "UserImport" in request.POST:
        g = UserImportForm(request.POST, prefix='usrimp')

        if g.is_valid():
            rawtext = g.cleaned_data['importtext'].encode('utf8')

            rawtext = "".join(rawtext)
            rawtext = rawtext.split("\n")
            newusers = []
            for lines in rawtext:
                row = lines.split()
                if len(row) == 3:
                    try:
                        validate_email(row[2])
                        newusers.append([row[0],row[1],row[2],"processmore"])
                    except:
                        newusers.append([row[0],row[1],row[2],"Invalid email address"])