代码之家  ›  专栏  ›  技术社区  ›  Compoot

在django中创建表单-输出错误

  •  1
  • Compoot  · 技术社区  · 8 年前

    我在不同的地方编写了以下代码,试图用Django生成一个表单,该表单获取数据并将其写入数据库

    意见。py公司

    from django.shortcuts import render
    from django.http import HttpResponse
    from django.http import HttpResponseRedirect
    
    from .forms import TeacherSignup
    
    """def teachers(request):
        return render(request,'teachers/teachers.html')
    """
    def teachers(request):
        # if this is a POST request we need to process the form data
        if request.method == 'POST':
            # create a form instance and populate it with data from the request:
            form = TeacherSignup(request.POST)
            # check whether it's valid:
            if form.is_valid():
                # process the data in form.cleaned_data as required
                # ...
                # redirect to a new URL:
                return HttpResponseRedirect('/thanks/')
    
        # if a GET (or any other method) we'll create a blank form
        else:
            form = TeacherSignup()
    
        return render(request, 'teachers/teachers.html', {'form': form})
    

    教师。html (这是包含表单的html页面)

    <form action="/teachers/" method="post" style="border:1px solid #ccc">
      {% csrf_token %}
      {{ form }}
      <div class="container">
        <label><b>Email</b></label>
        <input id="email" input type="text" placeholder="Enter Email" name="email" required>
    
        <label><b>Centre/School Name</b></label>
        <input id="school_name" input type="text" placeholder="Enter School or Centre Name" name="school_name" required>
    
        <label><b>Password</b></label>
        <input id="password" input type="password" placeholder="Enter Password" name="password" required>
    
        <label><b>Repeat Password</b></label>
        <input id="password_repeat" input type="password" placeholder="Repeat Password" name="password_repeat" required>
        <input type="checkbox" checked="checked"> Remember me
        <p>By creating an account you agree to our <a href="#">Terms & Privacy</a>.</p>
    
    
    
        <div class="clearfix">
          <button type="button" class="cancelbtn">Cancel</button>
          <button type="submit" class="signupbtn">Sign Up</button>
        </div>
      </div>
    </form>
    
    </body>
    </html>
    

    形式。py公司

    from django import forms
    
    class TeacherSignup(forms.Form):
        email=forms.CharField(label='email',max_length=100)
        school_name=forms.CharField(label='school_name',max_length=100)
        password=forms.CharField(label='password',max_length=100)
        password_repeat=forms.CharField(label='password_repeat',max_length=100)  
    

    然而,在运行服务器时,它会生成两个表单:我在html中创建的表单和可能在表单中创建的表单。py。

    我如何在教师中使用表格。html(位于页面末尾)并使用创建的表单将数据写入数据库,或者Django是否要求我使用表单创建它。py?

    请详细解释,如有可能,请举例说明。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Ramiro Uvalle    8 年前

    在模板中,可以逐字段渲染表单

    像这样的 教师。html

    <form action="/teachers/" method="post" style="border:1px solid #ccc">
      {% csrf_token %}
      <div class="container">
        <label><b>Email</b></label>
        {{ form.email }}
    
        <label><b>Centre/School Name</b></label>
        {{ form.school_name }}
    
        <div class="clearfix">
          <button type="button" class="cancelbtn">Cancel</button>
          <button type="submit" class="signupbtn">Sign Up</button>
        </div>
      </div>
    </form>
    

    其余的也一样

    如果要添加占位符属性,则需要将小部件参数添加到字段中,如果希望密码字段可以隐藏文本,则需要将小部件参数添加到字段中

    形式。py公司

    from django import forms
    
    class TeacherSignup(forms.Form):
        email=forms.CharField(label='email',max_length=100, widget=forms.TextInput(attrs={'placeholder': 'Enter Email'})
        school_name=forms.CharField(label='school_name',max_length=100, widget=forms.TextInput(attrs={'placeholder': 'Enter School or Centre Name'})
        password=forms.CharField(label='password',max_length=100, widget=forms.PasswordInput)
        password_repeat=forms.CharField(label='password_repeat',max_length=100, widget=forms.PasswordInput)  
    
    推荐文章