将参数从Django 2中的模板传递给表单

时间:2018-08-04 03:20:32

标签: django python-3.x django-models django-forms django-templates

在Django中,我制作了一个表单,该表单获取电子邮件地址并将其保存在数据库中,这就是我的form.py:

class NewsletterUserSignUpForm(forms.ModelForm):
    class Meta:
        model = NewsletterUsers
        fields = ['email']

    def clean_email(self):
        email = self.cleaned_data.get('email')

        return email

这是我的views.py:

def newsletter_signup(request):
    form = NewsletterUserSignUpForm(request.POST or None)

    if form.is_valid():
        instance = form.save(commit=False)
        if NewsletterUsers.objects.filter(email=instance.email).exists():
            messages.warning(request, 'Your Email Already Exist In Our DataBase.',
                             'alert alert-warning alert-dismissible')
        else:
            instance.save()
            messages.success(request, 'Your Has Been Submitted To Our DataBase.',
                             'alert alert-success alert-dismissible')

    context = {
        'form': form,
    }
    return render(request, 'newsletter/subscribe.html', context)

这里的问题是此表单具有自己的输入,该输入必须放在其中,但是我想设计自己的模板并在模板中获取输入,然后将其传递给此表单,我的问题是如何传递在我的.html模板文件中输入到表单?

这是我的html文件,不知道在href中输入什么作为输入标签:

<form method="post" class="login100-form validate-form">
                    {% csrf_token %}
                    <span class="login100-form-title p-b-43">
                        Subscribe
                    </span>
                    <div>
                        <inputtype="email" name="Email">
                        <span class="label">Email</span>
                    </div>
                        <button type="submit" href="">
                            Subscribe
                        </button>
                    </div>

,我应该在href中输入什么内容,以及如何从此处将输入传递给表单? 此外,很抱歉在我的问题中写错了。

2 个答案:

答案 0 :(得分:1)

据我了解,您想要创建自己的自定义输入框,并且当该框被填充时,您还希望表单输入框也被填充。

使用display:none隐藏表单输入框。 创建您自己的自定义输入框,在填写自定义输入框时使用javascript填写表单输入框。 例如:

<script>
   form_input_box = document.getElementById('id_of_form_input_box')
   custom_input_box = documen.getElementById('id_of_custom_input_box')

   $("id_of_custom_input_box").change(function(){
   form_input_box.value = custom_input_box.value
   });
</script>

答案 1 :(得分:0)

这是我的html代码的问题,我应该在输入标签中添加一个id和name属性,并使用该id和名称从html获取输入并将其传递给我的表单,对于href属性,我编写了url重定向到我的表单。 固定的html代码:

<form method="post" class="login100-form validate-form">
                {% csrf_token %}

                <span class="login100-form-title p-b-43">
                        Subscribe
                    </span>

                <div class="wrap-input100 container-login100-form-btn rs1 rs2 validate-input padding-50"
                     data-validate="Username is required">
                    <input id="email" maxlength="100" class="input100" type="email" name="email">
                    <span class="label-input100">Email</span>
                </div>


                <div class="container-login100-form-btn">
                    <button type="submit" href="{% url 'newsletter_subscribe' %}" class="login100-form-btn">
                        Subscribe
                    </button>
                </div>

                <div class="text-center w-full p-t-23">
                    <a style="font-size: 15px" href="{% url 'newsletter_unsubscribe' %}" class="txt1">
                        Click Here To Unsubscribe.
                    </a>
                </div>
            </form>