【问题标题】:Element of my django forms.py is not defined?我的 django forms.py 的元素没有定义?
【发布时间】:2019-08-08 00:53:58
【问题描述】:

我在处理表单时遇到了 django 的问题:我创建了一个包含 2 个字段的表单,并将其与我的视图相关联,但它告诉我我的字段未定义。能给我解释一下吗?

我在 index.html 中创建了一个表单:

 <form action="/addUser" method="post">
    {% csrf_token %}
    <label> Name of the Employee : <input type="text" name="employeeName", id="employeeName"/> </label>
    <label> Email of the Employee : <input type="email" name="employeeEmail", id="employeeEmail" /> </label>
    <button class="btn btn-primary" type="submit">Add User</button>
</form>

然后我在views.py中创建

def addUser(request):

    if request.method == 'POST':
        form = CreationUserForm(request.POST)

        newEmployee = Employee()
        newEmployee.name = form[employeeName]
        newEmployee.email = form[employeeEmail]
        newEmployee.save()

    return HttpResponseRedirect(reverse('app:home'))

然后我在forms.py中创建了

class CreationUserForm(forms.Form):
    employeeName = forms.CharField(label='employeeName', max_length=254)
    employeeEmail = forms.CharField(label='employeeEmail', max_length=254)

所以我不明白为什么会出现此错误:未定义名称“employeeName”

在我看来是……

我也尝试过 form.employeeName,但它被认为是不存在的属性。

感谢您的帮助:)

【问题讨论】:

    标签: python django forms view


    【解决方案1】:

    在您的 addUser 方法中,employeeNameemployeeEmail 都是未定义的变量。您想通过字符串访问键。

    def addUser(request):
    
        if request.method == 'POST':
            form = CreationUserForm(request.POST)
    
            newEmployee = Employee()
            newEmployee.name = form['employeeName']
            newEmployee.email = form['employeeEmail']
            newEmployee.save()
    
        return HttpResponseRedirect(reverse('app:home'))
    

    也是一个 Django 建议 - 在访问表单的属性之前,通过调用if form.is_valid() 来检查输入是否有效通常很有用,如下定义:https://docs.djangoproject.com/en/2.2/ref/forms/api/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多