【问题标题】:Getting data from HTML Input elements for Django Form从 Django Form 的 HTML Input 元素中获取数据
【发布时间】:2017-12-02 11:14:32
【问题描述】:

我的模板中有一个设计好的表单,我想使用它而不是 Django 表单。我创建了模型和视图类和 url,但我不知道如何接收和使用表单的数据。我已经研究过Rendering fields manually,但我想使用我的表单输入和标签,并且只需要数据。

请注意,类和模型可以完美运行,如果我在模板中使用 {{ form }} 而不是下面的 html 代码,我可以使用数据

这是我的 forms.py 中的课程:

class Reserve(forms.Form):
    name = forms.CharField(label='نام و نام خانوادگی', max_length=100)
    phone = forms.CharField(label='شماره تماس', max_length=11)
    email = forms.EmailField(label='ایمیل', max_length=100)
    occasion = forms.CharField(label='مناسبت', max_length=100)
    month = forms.CharField(label='ماه', max_length=100)
    day = forms.CharField(label='روز', max_length=100)
    week = forms.CharField(label='روز هفته')
    time = forms.CharField(label='ساعت', max_length=100)
    message = forms.CharField(label='توضیحات')

这是我在 views.py 中的函数:

def add_reserve(request):
    if request.method == 'POST':
        form = Reserve(request.POST)
        if form.is_valid():
           name = form.cleaned_data['name']
           phone = form.cleaned_data['phone']
           email = form.cleaned_data['email']
           occasion = form.cleaned_data['occasion']
           month = form.cleaned_data['month']
           day = form.cleaned_data['day']
           week = form.cleaned_data['week']
           time = form.cleaned_data['time']
           message = form.cleaned_data['message']
           reserve = MangReserve(name=name, phone=phone, email=email, occasion=occasion, month=month, day=day,
                              week=week, time=time, message=message)
           reserve.save()
           return HttpResponseRedirect('/')

    else:
        form = Reserve()

return render(request, 'mang/temp.html', {'form': form})

最后是我的表单的一部分:

<form method="post" action="{% url 'mang:add-reserve' %}">
                    {% csrf_token %}
                    <div class="form-group ">
                        <label for="name" class="sr-only">Name</label>
                        <input id="name" class="form-control" placeholder="نام و نام خانوادگی" type="text">
                    </div>
                    <div class="form-group ">
                        <label for="phone" class="sr-only">Name</label>
                        <input id="phone" class="form-control" placeholder="موبایل" type="text">
                    </div>
                    <div class="form-group ">
                        <label for="email" class="sr-only">Email</label>
                        <input id="email" class="form-control" placeholder="ایمیل" type="email">
                    </div>
                    <div class="form-group ">
                        <label for="occasion" class="sr-only">occasion</label>
                        <input id="occasion" class="form-control" placeholder="مناسبت" type="text">
                    </div>.......

【问题讨论】:

    标签: python django forms


    【解决方案1】:

    我不知道您从哪里获得模板,但所有字段都缺少重要的name 属性。没有它,浏览器根本不会向服务器发送任何数据。

    【讨论】:

      【解决方案2】:

      请将“name”属性添加到与您的表单字段匹配的所有 HTML 输入元素,我认为这将解决您的问题。一个例子:

       <input id="email" class="form-control" name="email" placeholder="ایمیل" type="email">
      

      上面的输入元素被指定为 name="email",它与您的表单电子邮件字段相匹配。

      对所有输入元素执行此操作后,您应该会在 request.POST 中收到数据,并且表单将按预期工作。

      【讨论】:

      • 非常感谢...可惜我没有注意检查表单属性是否正确
      • 很高兴它有帮助。
      猜你喜欢
      • 1970-01-01
      • 2013-04-26
      • 2019-04-03
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多