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

问题描述 投票:1回答:1

我在不同的地方有以下代码尝试在Django中生成一个表单,它接收数据并将其写入数据库

views.朋友

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})

teachers.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>

forms.朋友

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中创建的表单以及可能在forms.py中创建的表单。

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

如果可能的话,将通过示例来理解详细说明。

html django forms
1个回答
2
投票

在模板中,您可以按表单的字段进行渲染

在teacher.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>

并为其他人做同样的事情

如果要添加占位符属性,则需要将widget param添加到字段中,如果您希望密码字段可以隐藏文本,则需要相同

forms.朋友

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)  
© www.soinside.com 2019 - 2024. All rights reserved.