代码之家  ›  专栏  ›  技术社区  ›  Ali Akhtari

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

  •  0
  • Ali Akhtari  · 技术社区  · 8 年前

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

    class NewsletterUserSignUpForm(forms.ModelForm):
        class Meta:
            model = NewsletterUsers
            fields = ['email']
    
        def clean_email(self):
            email = self.cleaned_data.get('email')
    
            return email
    

    这是我的观点.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 回复  |  直到 8 年前
        1
  •  1
  •   coderDude    8 年前

    据我所知,您希望创建自己的自定义输入框,当该框被填充时,您希望表单输入框也被填充。

    使用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>
    
        2
  •  0
  •   Ali Akhtari    8 年前

    问题在于我的html代码,我应该在我的输入标签中添加一个id和name属性,并使用这个id和name从html获取输入并将其传递给我的表单,而对于ref属性,我编写重定向到表单的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>