【问题标题】:Django accepts an integer into a CharFieldDjango 接受一个整数到 CharField
【发布时间】:2019-05-26 13:33:20
【问题描述】:

我正在学习 django,并创建了一个 Page form class,如下所示:

from django import forms

class Page(forms.Form):
    title  = forms.CharField(max_length = 200, min_length = 10)
    body   = forms.CharField(min_length = 200, max_length = 8000)
    author = forms.CharField(min_length = 5, max_length   = 60)
    price  = forms.FloatField(min_value = 10, max_value   = 50)

我在交互式外壳中摆弄它,发现当我输入integer 时,它只是接受并验证所有字段,尽管它确实首先将integer 转换为string

这不是很明显的问题吗?我的意思是我不希望Author field 中有任何数字或任何符号。我需要写我的额外clean_author method 还是我有任何其他django Form class 可供我使用来解决这个问题??

【问题讨论】:

  • Djang CharField 接受 bool、int、str、float 作为有效数据类型。对于其他类型,截至Github link,它将引发“不是有效字符串”的错误

标签: python django-forms


【解决方案1】:

没有可以验证此类数据的字段类型。

您可以在后端或前端使用正则表达式轻松验证用户输入的数据。

exp = '[\w\s]+'

这只会接受适合作者姓名的单词和空格

https://regexr.com/ 使用这个网站来制作你的正则表达式。

【讨论】:

  • 您确定没有针对此问题的字段类型。我相信这是一个司空见惯的问题,django 必须对现有方法有一些神奇的方法或关键字参数。我想知道有没有。
  • 我很确定没有。但即使有,这也是一个简单的问题,可以通过后端的两行代码来解决。
猜你喜欢
  • 2019-10-07
  • 2021-07-06
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-05
  • 2016-01-29
  • 1970-01-01
相关资源
最近更新 更多