You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTML POST表单结构与Django模板POST请求:现有HTML表单转Django代码求助

HTML表单转Django模板实现方案

你提供的是提交到Salesforce的WebToLead表单,对应有两种Django模板等价实现方式:

最简直接转换(复用原有HTML结构)

不需要修改原有表单提交逻辑,仅清理原代码中无效的冗余</select>标签即可直接在Django模板中使用:

<form action="https://webto.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8" method="POST">
    <input type="hidden" name="oid" value="00D280000016jv0">
    <input type="hidden" name="retURL" value="https://url/form/">

    <label for="first_name">First Name</label>
    <input id="first_name" maxlength="40" name="first_name" size="20" type="text" /><br>

    <label for="last_name">Last Name</label>
    <input id="last_name" maxlength="80" name="last_name" size="20" type="text" /><br>

    <label for="email">Email</label>
    <input id="email" maxlength="80" name="email" size="20" type="text" /><br>

    <label for="phone">Phone</label>
    <input id="phone" maxlength="40" name="phone" size="20" type="text" /><br>

    <input type="submit" name="submit">
</form>

注意:因为该表单直接提交到外部Salesforce站点,不需要添加Django默认的{% csrf_token %}标签,第三方站点不会验证Django的csrf凭证。如果后续调整为提交到你自己的Django后端处理,才需要在form标签内部第一行补充{% csrf_token %}。

符合Django最佳实践的实现(使用Form类)

如果需要在Django侧做表单校验、字段默认值填充、样式统一管理,可以用Django Form类实现:

第一步:编写forms.py

from django import forms

class SalesforceLeadForm(forms.Form):
    first_name = forms.CharField(max_length=40, label="First Name", widget=forms.TextInput(attrs={'size':'20'}))
    last_name = forms.CharField(max_length=80, label="Last Name", widget=forms.TextInput(attrs={'size':'20'}))
    email = forms.EmailField(max_length=80, label="Email", widget=forms.TextInput(attrs={'size':'20'}))
    phone = forms.CharField(max_length=40, label="Phone", widget=forms.TextInput(attrs={'size':'20'}))

第二步:视图中传入表单实例

from .forms import SalesforceLeadForm

def lead_form_view(request):
    # 如果需要回填默认值可以在实例化时传入initial参数
    form = SalesforceLeadForm()
    return render(request, '你的模板路径.html', {'form': form})

第三步:模板代码

如果不需要自定义字段布局,直接批量渲染即可:

<form action="https://webto.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8" method="POST">
    <input type="hidden" name="oid" value="00D280000016jv0">
    <input type="hidden" name="retURL" value="https://url/form/">

    {{ form.as_p }}

    <input type="submit" name="submit">
</form>

如果需要自定义每个字段的渲染样式,可以分开写每个字段的逻辑:

<form action="https://webto.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8" method="POST">
    <input type="hidden" name="oid" value="00D280000016jv0">
    <input type="hidden" name="retURL" value="https://url/form/">

    <div>
        <label for="{{ form.first_name.id_for_label }}">{{ form.first_name.label }}</label>
        {{ form.first_name }}
        <br>
    </div>
    <div>
        <label for="{{ form.last_name.id_for_label }}">{{ form.last_name.label }}</label>
        {{ form.last_name }}
        <br>
    </div>
    <div>
        <label for="{{ form.email.id_for_label }}">{{ form.email.label }}</label>
        {{ form.email }}
        <br>
    </div>
    <div>
        <label for="{{ form.phone.id_for_label }}">{{ form.phone.label }}</label>
        {{ form.phone }}
        <br>
    </div>

    <input type="submit" name="submit">
</form>

内容的提问来源于stack exchange,提问作者Angela Rubchinksy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 19:15:10