【问题标题】:Django regex validator message is not showing upDjango 正则表达式验证器消息未显示
【发布时间】:2018-08-27 07:47:32
【问题描述】:

我的 RegexValidator 似乎正在工作,因为如果以错误的格式输入 phone_number,则不会保存表单,但不会显示错误消息。如果格式符合正则表达式,则保存表单。我检查了Django regex validator message has no effect 的帖子并包含了代码属性,但它没有改变任何东西。好像少了点什么,但我不知道是什么。我的 models.py 和 forms.py 如下:

#models.py
from django.db import models
from django.core.validators import RegexValidator

class Notification(models.Model):
    sender = models.EmailField(max_length = 100)
    status = models.CharField(max_length = 50)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
    message_info = models.TextField(max_length = 1000)

    def __str__(self):
        return self.message_info[:100]

class ScheduleNotification(Notification):
    company = models.CharField(max_length = 50)
    phone_regex = RegexValidator(
        regex=r'^\+?1?\d{9,15}$',
        message="Phone number must be entered in the format: '+79999999999'. Up to 15 digits allowed.",
        code="invalid")
    phone_number = models.CharField(validators=[phone_regex], max_length=17, blank=False)

    def __str__(self):
        return self.sender

#forms.py
from django import forms
from .models import Notification, ScheduleNotification
...
class ScheduleNotificationForm(forms.ModelForm):
    class Meta:
        fields = ['sender', 'company', 'phone_number', 'message_info']
        labels = {
            "sender": "your email:",
            "company": "your company:",
            "phone_number": "your mobile:",
            "message_info": "type your message:"
        }

【问题讨论】:

  • 您在哪里使用您的表单?在管理员里面?如果您在自定义页面上使用它,也许您忘记为您的 phone_number 字段打印错误消息?我刚刚检查了一个几乎相同的用例的代码,我无法发现您的代码中的缺陷,但请发布您是如何使用该表单的。
  • 我和安迪一样——我觉得一切都很好。尝试在
    标记内简单地使用 {{ form }} 以查看错误是否有效然后...
  • 安迪,谢谢你的建议。问题是在我的模板中我确实没有打印错误,我检查了这篇文章stackoverflow.com/questions/14647723/… 并了解它应该如何工作。但由于在我的情况下,表单提交是通过 Ajax 并且来自视图的响应是通过 JsonResponse,所以我什么也没得到。我将错误文本添加到 JsonResponse 中。现在可以了。再次感谢!

标签: django python-3.6


【解决方案1】:

RegexValidator(regex=regex, message=(message),) 创建一个类似的,在 () 中包含消息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-11
    • 2020-09-25
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    相关资源
    最近更新 更多