Django的表单实例错误

2024-06-25 06:45:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我在project中的文件是:

djangoTry

你知道吗--视图.py你知道吗

你知道吗--表单.py你知道吗

——本问题档案中未包含的其他问题

当我在表单中单击submit时,我从视图.py地址:

from .forms import NameForm
def kontakt(request):
if request.method == 'POST':
    form = NameForm(request.POST)
    form.test("test")
    if form.is_valid():
        first_name = form.cleaned_data['first_name']
        last_name = form.cleaned_data['last_name']
        phone_number = form.cleaned_data['phone_number']
        email = form.cleaned_data['email']
        details = form.cleaned_data['details']
        return HttpResponseRedirect('/')

else:
    form = NameForm()

return render(request, 'index.html', {'form':form})

NameForm来自表单.py文件:

from django import forms

class NameForm(forms.Form):
    first_name = forms.CharField(label='first_name', max_length=100)
    last_name = forms.CharField(label='last_name', max_length=100)
    phone_number = forms.CharField(label='phone_number', max_length=100)
    email = forms.CharField(label='email', max_length=100)
    details = forms.CharField(label='details', max_length=100)
    def test(self, message):
        print("i'm in test and message is: %s " , (message))
        print(self.first_name)

    def is_valid(self):
        print("jest valid")
        return True

你知道吗表单.html你知道吗

<form class="col s12" action="{% url 'kontakt' %}" method="post">

        {% csrf_token %}
        {{ form }}
        <div class="row">
          <div class="input-field col s6">
            <input 
              id="first_name" 
              type="text" 
              value="hehe">
              <!-- value="{{ form.first_name }}"> -->
            <label for="first_name">First name</label>
          </div>
          <div class="input-field col s6">
            <input 
              id="last_name" 
              type="text" 
              autocomplete="off" 
              value="hehe">

              <!-- value="{{ form.last_name }}" > -->
            <label for="last_name">Last name</label>
          </div>
        </div>
        <div class="row">
          <div class="input-field col s12">
            <input id="phone_number" type="number" autocomplete="off" 
              value="123456789">
            <label for="phone_number">Phone number</label>
          </div>
        </div>
        <div class="row">
          <div class="input-field col s12">
            <input id="email" type="email" autocomplete="off" value="rafald121@gmail.com" >
            <label for="email">Email</label>
          </div>
        </div>
        <div class="row">
          <div class="input-field col s12">
            <input id="details" type="text" autocomplete="off" value="qweqweqeq">
            <label for="details">Details</label>
          </div>
        </div>
        <div class="row">
          <div class="input-field col s12">
            <a class="waves-effect waves-light btn">
              <input id="submit" type="submit" >
              <i class="material-icons right">send</i>
            </a>
            <!-- <input id="submit" type="submit" > -->
            <label for="details">Details</label>
          </div>
        </div>        
      </form>

但每次我出错:

AttributeError: 'NameForm' object has no attribute 'first_name'

但是NameForm有“名字”atribute

NameForm的方法“test”每次都能正常工作,但是不能调用NameForm的任何变量。你知道吗

有人知道发生了什么事吗?你知道吗


Tags: namedivformidnumberinputemailcol