【问题标题】:what‘s the difference for an instance of ModelForm between getting field values from argument data and directly from request.POST?ModelForm 实例从参数数据获取字段值和直接从 request.POST 获取字段值有什么区别?
【发布时间】:2016-06-07 08:15:21
【问题描述】:

这是我的代码:

from .forms import ImageCreateForm


@login_required
def image_create(request):
    """
    View for creating an Image using the JavaScript Bookmarklet.
    """
    if request.method == 'POST':
        # form is sent
        # ########  here is my issue ####################
        form = ImageCreateForm(data=request.POST)
        # ########  end of  my issue ####################
        if form.is_valid():
            ......
            # redirect to new created item detail view
            return redirect(new_item.get_absolute_url())
    else:
        # build form with data provided by the bookmarklet via GET
        form = ImageCreateForm(data=request.GET)

    return render(request, 'images/image/create.html', {'section': 'images', 'form': form})

这段代码来自Django by Example一书中,但是当我在Django的官方网站上时,我看到一个Modleform的实例是这样创建的: https://docs.djangoproject.com/en/1.9/topics/forms/modelforms

save() 方法

# Create a form instance from POST data.
>>> f = ArticleForm(request.POST)

所以这是我的问题:从 POST 数据创建表单实例的两种方式有什么区别

【问题讨论】:

  • 为什么你会认为有区别?这是标准的 Python; __init__ 函数形式的第一个位置参数是 data,因此您可以按位置或通过关键字传递它。
  • 我知道了,非常感谢~

标签: django django-models django-forms


【解决方案1】:

__init__ 函数的第一个位置参数是数据,所以我们可以按位置传递它

f = ArticleForm(request.POST)

或通过关键字

f = ArticleForm(data=request.POST)

感谢 Daniel Roseman 告诉我这些。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 2012-12-19
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    相关资源
    最近更新 更多