Я не могу отправить форму, даже если она действительна - PullRequest
0 голосов
/ 28 июня 2019

Я использовал CreateView для формы, но форма не отправляется, даже если она действительна.Он просто перенаправляет на ту же страницу снова. Я использую form_id для полей from, и он даже отправляется один или два раза, но теперь он просто не работает.

models.py

class Centre(models.Model):
    name= models.CharField(max_length=50, blank=False, unique=True)
    address = models.CharField(max_length =250)
    phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$',
                                 message="Phone number must be entered in the format: '+999999999'. Up to 10 digits allowed.")
    contact = models.CharField(max_length=100, blank=False)
    phone = models.CharField(validators=[phone_regex], max_length=10, blank=True) 

views.py

class centre(CreateView):
    fields = ('name','address','contact','phone',)
    model = Centre
    success_url = reverse_lazy("NewApp:logindex")

    def form_valid(self, form):
        form.save()
        return super(centre, self).form_valid(form)

шаблон:

<form method="POST">
    {% csrf_token %}
    <div class="col col-md-12">
    <div class="fieldWrapper" >
    {{ form.name.errors }}
    <div class="form-group col col-md-3">
        <label for="{{form.name.id_for_label}">Centre Name</label>
        <input type="text" placeholder="Centre Name" name="name" maxlength="250"  id="id_name" style="box-sizing: border-box; width:500px;">
    </div>
    </div>
    <div class="form-group col col-md-3" style="float:right; margin-top=-80px;width=200%">
        <label for="{{form.address.id_for_label}" style="margin-left:200px;width:200%;white-space:nowrap;">Centre&nbsp;Address</label>
         <input type="text" placeholder="Centre Address" name="address" maxlength="250" id="id_address" style="width:500px; margin-left:200px;">
    </div>
    </div>
    <br> <br><br><br>
    <div class="col col-md-12">
     <div class="form-group col col-md-3" style="float:right; margin-top=-80px;">
    <label for="{{form.contact.id_for_label}" style="margin-left:200px;width:200px;white-space:nowrap;">Contact&nbsp;Person</label>
     <input type="text" placeholder="Contact Person" name="address" maxlength="250" id="id_contact" style="width:500px; margin-left:200px;">
     </div>
    {{ user_form.non_field_errors }}
    <div class="fieldWrapper" >

     <div class="form-group col col-md-3" >
        <label for="{{form.phone.id_for_label}" style="white-space:nowrap;">Contact&nbsp;Number</label>
    <input type="text" name="phone"  maxlength="10" id="id_phone" placeholder="Contact Number" style="width:500px";>
        {{ form.phone.errors }}
     </div>
    </div>
    </div>
    <br>
    <br>
    <div class="col col-md-12" style="padding-left:4.5% ;padding-top:2%">
    <input type="submit" value="Save" class="btn btn-primary" style=" height:30px;width:80px;padding-bottom:2em;"></input>
    </div>
</form>

1 Ответ

0 голосов
/ 28 июня 2019

У вас неправильный атрибут name для поля contact, в результате чего он не передается. В то же время вы не выводите ошибки для этого поля.

(Обратите внимание, что вы действительно должны использовать теги формы Django для вывода элементов ввода; это позволило бы избежать этой ситуации, а также предварительно заполнить поля при повторном отображении шаблона после проверки.)

...