8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Django 表单字段样式出现错误的问题

FbInfo 2月前

33 0

我正在用 Django 构建我的第一个网站,遇到了一个我认为非常奇怪的问题。我的页面上有一个表单,我希望如果用户在表单中的一个字段中输入了无效数据,系统会通知我,如果用户 ...

我正在用 Django 构建我的第一个网站,我遇到了一个我认为非常奇怪的问题。我的页面中有一个表单,我希望如果用户在表单的某个字段中输入了无效数据,则该字段会用特定的 CSS 样式标记。我所做的就是编写一个验证方法(“clean()”方法),检查用户提供的输入。如果未通过验证,则将类“error”添加到该输入的小部件中。然后,我使用 CSS 为该 .error 类赋予一些特定的样式。

问题如下:错误样式未正确应用于表单的“姓名”、“姓氏”和“电子邮件”字段。例如,当您输入无效的姓氏时,“姓氏”和“姓名”字段均会以红色突出显示;当您输入无效的电子邮件地址时,“电子邮件”和“姓名”字段均会突出显示。

我已经检查过“forms.py”文件一千遍了,但还是找不到问题所在。

以下是“forms.py”文件的代码:

from django import forms
from .models import Appointment

class AppointmentForm(forms.ModelForm):
        
class Meta:
    model = Appointment
    fields = ['name', 'last_name', 'email', 'date', 'time']
    widgets = {
        "name": forms.TextInput(attrs={"class": "form-control"}),
        "last_name": forms.TextInput(attrs={"class": "form-control"}),
        "email": forms.EmailInput(attrs={"class": "form-control"}),
    }
            
def clean_name(self):
    name = self.cleaned_data["name"]

    if not name.isalpha():
        self.fields['name'].widget.attrs['class'] += ' error'
        raise forms.ValidationError("Please, input only letters", code="carac_esp")
        
    
    return name

def clean_last_name(self):
    last_name = self.cleaned_data["last_name"]

    if not last_name.isalpha():
        self.fields['last_name'].widget.attrs['class'] += ' error'
        raise forms.ValidationError("Please, input only letters", code="carac_esp")
    
    return last_name

def clean_email(self):
    email = self.cleaned_data["email"]
    allowed_domains = ['gmail.com', 'hotmail.com', 'yahoo.com']

    if not any(email.endswith(domain) for domain in allowed_domains):
        self.fields['email'].widget.attrs['class'] += ' error'
        raise forms.ValidationError("Please, input a valid email address", code="email_invalid")
    
    return email

\'views.py\' 文件是:

from django.shortcuts import render
from .forms import TurnoForm

def home(request):

    if request.method == "POST":
        form = TurnoForm(request.POST)
        form.is_valid()

        if form.is_valid():
            form.save()
            return render(request, "home/index2.html", {"form": form})
        
        else:
            
            return render(request, "home/index2.html", {"form": form})
    
    else:

        form = TurnoForm()
        return render(request, "home/index2.html", {"form": form})

下面是 HTML 的简化版本,仅显示给我带来问题的表单:

{% load static %}
<!DOCTYPE html>
<html lang="es">
<head>
    
    <link rel="stylesheet" href="{% static 'home/css/style2.css' %}">
    <link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
     
   
</head>
<body>
    
    

<div id="turnos">
    <fieldset>
        <legend id="legend-turnos">Agende su turno</legend>
        <div id="div_formbox">
            <form method="post" id="form_turnos">
                <div class="form-group">
                    {% csrf_token %}
                    
                    {{ form.non_field_errors }}
                                       
            
                    <div class="input_group">
                        
                        
                        <div class="input_field">
                            {{ form.nombre }}
                        </div>
                        
                        <div class="input_field">
                            {{ form.apellido }}
                        </div>
                                                    
                        
                        <div class="input_field">
                            {{ form.email }}
                        </div>
                                                    
                        <button type="submit" class="btn btn-primary" id="btn_guardar">Guardar</button>
        
                    </div>
        
                </div>
            </form>
        </div>
    

用于设置无效字段样式的 \'styles2.css\' 文件的 css 错误类:

.error{
    background-color: lightcoral;
}
帖子版权声明 1、本帖标题:Django 表单字段样式出现错误的问题
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由FbInfo在本站《forms》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我添加了 \'views.py\' 文件和 HTML 文件 \'index2.html\' 的简化版本,其中仅包含无法正常工作的表单。希望对您有所帮助。如果您尝试运行它并使用除字母以外的任何内容填写表单的第二个输入字段(与 \'last_name\' 字段对应的字段),您将看到 \'name\' 字段也被标记为无效。

返回
作者最近主题: