簡體   English   中英

Django 不讀取表單

[英]Django doesn't read form

我有表格:

<form id="contact-form" class="contact__form" method="POST" action="{% url 'backcall' %}">

    {% csrf_token %}
    <span class="text-color">Send letter</span>
    <div class="form-group">
        <input name="name" type="text" class="form-control" placeholder="Name">
    </div>
     <div class="form-group">
       <input type="tel" name="phone" class="form-control" placeholder="Phone (+380)"  pattern="[\+][3][8][0]\d{9}" minlength="13" maxlength="13" />
    </div>
    <div class="form-group">
        <input name="email" type="email" class="form-control" placeholder="Email">
    </div>
    <div class="form-group-2 mb-4">
        <textarea name="message" class="form-control" rows="4" placeholder="Your letter"></textarea>
    </div>
    <button class="btn btn-main" name="submit" type="submit">Send</button>
</form>

視圖.py:

def backcall(request):
    backcall = BackCall(name = request.POST['name'], phone = request.POST['phone'], email=request.POST['email'] , message = request.POST['message'])
    backcall.save()
    return redirect('thanks')

模型.py

class BackCall(models.Model):
    name = models.CharField(max_length=50)
    phone = models.CharField(max_length=13)
    email = models.EmailField()
    message = models.TextField(default=None)
    datetime = models.DateTimeField(auto_now_add=True)

當我填寫表格並提交時,什么也沒有發生。 當我點擊鏈接“backcall/”時,出現錯誤

問題可能與什么有關以及如何解決?

請搜索更多,存在解決方案

使用 MultiValueDict 的get方法。 這也存在於標准字典中,並且是一種獲取值的方法,如果它不存在則提供默認值。

def backcall(request):
    backcall = BackCall(name = request.POST.get('name'), phone = request.POST.get('phone'), email=request.POST.get('email') , message = request.POST.get('message'))
    backcall.save()
    return redirect('thanks')

您應該檢查該記錄是否存在於您的數據庫中,我認為,一個簡單的例子是:

 def backcall(request):
     obj, created = BackCall.objects.get_or_create(email=request.POST.get('email'),
                           defaults={'phone': request.POST.get('phone'),
                                              'name': request.POST.get('name'),
                                              'message': request.POST.get('message')}

    if created:
       return redirect('thanks')

    return ...

暫無
暫無

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

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