【问题标题】:Django: POSTing directly into a Django-powered form?Django:直接发布到 Django 驱动的表单中?
【发布时间】:2011-07-13 14:20:21
【问题描述】:

我有一个 Django 表单页面,以经典的 Django 方式设置,以显示 GET 请求的表单并处理 POST 请求的表单提交,并返回无效数据的错误。

def create_trial(request):
  trial_form = TrialForm()
  if request.method == 'POST':
    if request.POST['form'] == 'trial_create':
      trial_form = TrialForm(request.POST)
      if trial_form.is_valid():
         # etc etc
 return render_to_response(template, {'trial_form': trial_form},
                            context_instance=RequestContext(request))

现在,我需要创建一个位于不同子域中的静态 HTML 页面,该页面直接发布到这个 Django 表单中。

显然,如果所有数据都正常,那就没问题 - HTML 页面只会重定向到 Django 成功消息。

但是,如果 Django 表单拒绝了某些数据,会发生什么?我的用户会看到什么?

如果他们被重定向到 Django 表单(在 Django 子域中)并预先填充数据并显示相关错误消息,那么理想的情况是,但我不知道这是否真的可能。

请任何人提供建议?

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    你说帖子来自不同的网站?假设我有包含视图的站点 1 和具有 html 表单的站点 2。我认为不可能从 site1 的视图中转到 site2,除非您调用重定向,在这种情况下,您将无法访问各种验证响应,例如表单错误等,除非您找到一种方法通过它们全部传递查询字符串。如果你这样做了,那么你可以在 site2 的一侧创建一个处理程序,它将接收和解析来自 site1 的响应。我不确定这是否适用于您的情况,因为您说它只是静态 html。

    【讨论】:

    • page1 与 page2 位于不同的子域中,它是静态 HTML 而不是 Django。当然可以通过 HTTP(不是 JS)跨域发送 POST 吗?
    【解决方案2】:

    回答我自己的问题:没问题 - 在测试中,这一切都在 Django 中工作。

    失败的响应重定向到 Django 子域上的表单,并预先填写了错误。我心动 Django!

    【讨论】:

    • Django 的主要目的是让 HTTP 变得简单。这就是它在这里所做的一切,没有魔法。
    猜你喜欢
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 2017-01-11
    • 2014-01-24
    相关资源
    最近更新 更多