从Django中的url参数初始化表单输入字段

an0o0nym

我正在根据“ Django示例”一书中的说明构建自己的项目。

但是我陷入了django如何使用URL参数初始化输入表单字段的问题

#models.py
class Image(models.Model):  
    title = models.CharField(max_length=200)
    description = models.TextField(blank=True)
    url = models.URLField()
    (...)

#views.py
def image_create(request):
    if request.method == 'POST':
        form = ImageCreateForm(data=request.POST)
        (...)
    else:
        form = ImageCreateForm(data=request.GET)
    return render(request,
              'create.html',
              {'form': form})
#forms.py
class ImageCreateForm(forms.ModelForm):
    class Meta:
        model = Image
        fields = ('title', 'url', 'description')
        widgets = {
            'url': forms.HiddenInput,
        }
#create.html
{% extends "base.html" %}
{% block content %}
<h1>Bookmark an image</h1>
<img src="{{ request.GET.url }}" class="image-preview">
<form action="." method="post">
    {{ form.as_p }}
    {% csrf_token %}
    <input type="submit" value="Bookmark it!">
</form>
{% endblock content %}

我找不到明确指示要获取request.GET参数并将它们中的每一个分配给相应输入字段的任何特定代码行。我认为所有这些都与在线初始化:form = ImageCreateForm(data=request.GET)views.py中的表单有关

问题:

  1. 有人可以解释一下django如何使用request.GET参数初始化输入字段的值(为它们分配URL参数的值)吗?它是否简单地为每个request.GET键匹配了相应的输入字段'name'属性,然后将与request.GET中的键对应的值分配给该特定输入字段?
  2. 还可以有人确认模型/表单(哪个?)字段名称与URL参数之间是否存在关系吗?
  3. 这两者之间有什么区别(因为两者似乎都以相同的方式工作,除了后者在输入字段值中返回list之外):

    form = ImageCreateForm(data=request.GET)

    form = ImageCreateForm(initial=request.GET)

1)是的-request.GET仅仅是一个精美的字典(从技术上来说就是QueryDict),并且形式“ data”参数需要一个字典,该字典具有与表单中的字段相对应的键。从技术上讲,如果字典具有代表字段的正确键,则可以将其传递给任何字典。

2)一般来说,模型/表单字段与url参数之间没有关系。但是,如果您使用某些基于类的视图(例如DetailView),并且在URL中设置了一个slug或id,它将把值传递给视图并将其映射到对象slug或id。以下链接中的get_object()方法有一个示例。

https://ccbv.co.uk/projects/Django/1.9/django.views.generic.detail/Det​​ailView/

3)表单的data属性是提交(通常是POST)到表单的内容,而初始值是在第一页加载时传递给表单的内容。例如,如果您正在编辑对象,则通常现有的对象数据将填充初始值。然后,如果您对表单进行过POST编辑,则它将作为数据传递。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用cbv中的url参数初始化modelform字段

来自分类Dev

表单的字段未初始化

来自分类Dev

如何在 Django 中初始化我的表单?

来自分类Dev

了解Django表单初始化

来自分类Dev

Django - 表单初始化如何工作?

来自分类Dev

Django表单使用“此字段为必填”消息初始化

来自分类Dev

如何使用模型中的其他字段初始化Django模型中的字段

来自分类Dev

Armadillo中的字段初始化

来自分类Dev

初始化匿名结构中的字段

来自分类Dev

在方法中初始化字段

来自分类Dev

类初始化中的可选参数

来自分类Dev

如何使用模型实例的某些参数初始化表单

来自分类Dev

在构造函数和初始化程序中,LINQ to Entities仅支持属性或字段参数绑定

来自分类Dev

在构造函数中初始化const字段,但首先检查一个参数

来自分类Dev

初始化后更改输入字段的占位符文本

来自分类Dev

根据输入参数初始化C ++数组

来自分类Dev

在Django中初始化GeopositionField

来自分类Dev

在Django CMS中初始化MultipleChoiceField

来自分类Dev

使用Kwargs的Django表单初始化密钥错误

来自分类Dev

Julia中的构造方法:基于其他命名字段的输入值初始化命名字段

来自分类Dev

Julia中的构造方法:基于其他命名字段的输入值初始化命名字段

来自分类Dev

如何在与自身(对象级别)不相关的Django模型中初始化ManyToMany字段?

来自分类Dev

在 Django ModelForm 中添加和初始化自定义字段

来自分类Dev

初始化表单集

来自分类Dev

隐藏URL中的表单输入字段

来自分类Dev

初始化结构的字段

来自分类Dev

继承初始化的字段

来自分类Dev

最终字段的初始化

来自分类Dev

子类的参数初始化

Related 相关文章

热门标签

归档