你如何从django表单中的条目中删除空格?

时间:2015-12-04 00:46:26

标签: python django django-forms

我正在尝试使用django表单初始化功能,并且出于某种原因,网络似乎非常简洁的高级表单功能。我只是想像#34; repo-with-accidental-space"并使它成为意外空间"回复意外空间"。现在我有:

class BitbucketCreateRepoForm(forms.Form):
    def __init__(self, repo_name=None, *args, **kwargs):
        if repo_name:
            self.repo_name = repo_name.strip()
        super(BitbucketCreateRepoForm, self).__init__()

    username    = forms.ChoiceField(required=True, initial='codyc54321', choices=BITBUCKET_USERNAME_CHOICES)
    repo_name   = forms.CharField(required=True, label='Repo name')
    description = forms.CharField(widget=forms.Textarea, required=False)

表单将在页面上加载,但是当我提交时:

AttributeError at /bitbucket/create-repo
'QueryDict' object has no attribute 'strip'

进入ipdb变得毛茸茸,必须有一个标准的方法来做到这一点,但我不能在我看到它完成的地方工作。

这是观点:

def create_repo(request):
    form = BitbucketCreateRepoForm(request.POST or None)
    if form.is_valid():
        repo_name   = request.POST['repo_name']
        username    = request.POST['username']
        description = request.POST['description'] or None            
        create_repo_func(username=username, repo_name=repo_name, description=description)
    return render(request, 'bitbucket/create_repo.html', locals())

如果表单经过POST后如何处理此字段,并更新该字段,在GET请求中将其留空?谢谢

1 个答案:

答案 0 :(得分:1)

在实例化此表单时传入请求方法。您可以使用以下方法检查请求方法:

post = request.method == 'POST'

您可以将其传递到下面的修改后的__init__

class BitbucketCreateRepoForm(forms.Form):
    def __init__(self, repo_name=None, post=False, *args, **kwargs):
        if repo_name and post:
            self.repo_name = json.dumps(repo_name).strip()
        super(BitbucketCreateRepoForm, self).__init__()

    username    = forms.ChoiceField(required=True, initial='codyc54321', choices=BITBUCKET_USERNAME_CHOICES)
    repo_name   = forms.CharField(required=True, label='Repo name')
    description = forms.CharField(widget=forms.Textarea, required=False)

更新: 我在你修改你的问题时打字。为了获得QueryDict对象的字符串表示,只需import json然后json.dumps(repo_name)。希望有所帮助。