簡體   English   中英

提交按鈕在 django 表單中無法使用脆皮

[英]submit button is not working in django form using crispy

我在 Django 中有一個聯系表,我在我的模板中使用了脆皮,但在 Class 基本視圖和 Function 基本視圖中,我的提交按鈕不起作用,我沒有錯誤。 這是我的 fbv 代碼。 我也用 cbv 試過

我的模板正在使用 jquery,bootstrap,moment.js

這是我的代碼:

模型.py

class ContactUs(models.Model):
    fullname = models.CharField(max_length=150, verbose_name="Full Name")
    email = models.EmailField(max_length=150, verbose_name="Email")
    message = models.TextField(verbose_name="Message")
    is_read = models.BooleanField(default=False)

    class Meta:
        verbose_name = "contact us"
        verbose_name_plural = "Messages"

forms.py:

    class CreateContactForm(forms.Form):
        fullname = forms.CharField(widget=forms.TextInput(attrs={"placeholder": "Full Name"}),
                                   validators=[
                                       validators.MaxLengthValidator(150,
                                                                     "Your name should be less than 150 character")
                                   ],
                                   )
        email = forms.EmailField(widget=forms.EmailInput(attrs={"placeholder": "Email address"}),
                                 validators=[
                                     validators.MaxLengthValidator(150,
                                                                   "Your email should be less than 150 character")
                                 ],
                                 )
        message = forms.CharField(widget=forms.Textarea(attrs={"placeholder": "Your Message"}))

視圖.py:

     def contact_page(request):
       contact_form = CreateContactForm(request.POST or None)
       if contact_form.is_valid():
         fullname = contact_form.cleaned_data.get('fullname')
         email = contact_form.cleaned_data.get('email')
         message = contact_form.cleaned_data.get('message')
         ContactUs.objects.create(fullname=fullname, email=email, message=message, is_read=False)
         # todo : show user a success message
         contact_form = CreateContactForm(request.POST or None)
    context = {"contact_form": contact_form}
    return render(request, 'contact_page.html', context)

模板:

<form id="contact-form" class="contact-form" data-toggle="validator" novalidate="true" method="post" action="">
  {% csrf_token %}
  <div class="row">
    <div class="form-group col-12 col-md-6">
      {{ contact_form.fullname|as_crispy_field }} {% for error in contact_form.fullname.errors %}
      <div class="help-block with-errors">{{ error }}</div>
      {% endfor %}
    </div>
    <div class="form-group col-12 col-md-6">
      {{ contact_form.email|as_crispy_field }} {% for error in contact_form.email.errors %}
      <div class="help-block with-errors">{{ error }}</div>
      {% endfor %}
    </div>
    <div class="form-group col-12 col-md-12">
      {{ contact_form.message|as_crispy_field }} {% for error in contact_form.message.errors %}
      <div class="help-block with-errors">{{ error }}</div>
      {% endfor %}
    </div>
  </div>
  <div class="row">
    <div class="col-12 col-md-6 order-2 order-md-1 text-center text-md-left">
      <div id="validator-contact" class="hidden"></div>
    </div>
    <div class="col-12 col-md-6 order-1 order-md-2 text-right">
      <button type="submit" name="submit" class="btn"><i class="font-icon icon-send"></i> Send Message</button>
    </div>
  </div>
</form>

嘗試將“保存”添加到提交按鈕 class。

在將聯系人數據保存到數據庫后,您的 contact_page 視圖也不會執行任何操作。 如果您將在 JS 中進行彈出確認,則無需第二次實例化contact_form 或者,如果您想重定向用戶:

def contact_page(request):
    contact_form = CreateContactForm(request.POST or None)
    if contact_form.is_valid():
        fullname = contact_form.cleaned_data.get('fullname')
        email = contact_form.cleaned_data.get('email')
        message = contact_form.cleaned_data.get('message')
        ContactUs.objects.create(
            fullname=fullname,
            email=email,
            message=message,
            is_read=False
        )
        return redirect('some-view')
    context = {"contact_form": contact_form}
    return render(request, 'contact_page.html', context)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM