首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Django中的url参数初始化表单输入字段

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

Stack Overflow用户
提问于 2016-07-26 02:12:56
回答 1查看 4K关注 0票数 4

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

然而,我被困在中,如何使用参数初始化输入表单字段?

代码语言:javascript
运行
复制
#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) in views.py

问题:

  1. 请有人解释一下如何使用request.GET参数来初始化输入字段值(为它们分配URL参数的值)吗?对于每个request.GET键,它是否简单地匹配相应的输入字段'name‘属性,然后为该特定输入字段分配与request.GET中的键对应的值?
  2. 另外,是否有人能确认模型/表单之间是否存在某种关系(哪一种?)URL参数的字段名?
  3. 这两者之间的区别是什么(因为两者的工作方式似乎是相同的,除非后者在输入字段值中返回列表): form = ImageCreateForm(data=request.GET) form = ImageCreateForm(initial=request.GET)
EN

Stack Overflow用户

回答已采纳

发布于 2016-07-26 05:30:34

1)是的-- request.GET只是一个花哨的字典(从技术上讲是一个QueryDict),而表单"data“参数需要一个具有与表单中字段对应的键的dict。从技术上讲,任何字典只要有正确的键表示字段,就可以传递表单。

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

https://ccbv.co.uk/projects/Django/1.9/django.views.generic.detail/DetailView/

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

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38580058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档