【发布时间】:2016-11-29 12:31:44
【问题描述】:
我正在根据“Django by Example”一书中的说明构建自己的项目。
但是我被困在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) in views.py
问题:
- 谁能解释一下 django 如何使用 request.GET 参数来初始化输入字段值(为它们分配 URL 参数的值)? 对于每个 request.GET 键,它是否只是匹配相应的输入字段“名称”属性,然后将与 request.GET 中的键对应的值分配给该特定输入字段?
- 还有人可以确认模型/表单(哪个?)字段名称与 URL 参数之间是否存在关系?
-
这两者有什么区别(因为它们似乎都以相同的方式工作,除了后者在输入字段值中返回列表):
form = ImageCreateForm(data=request.GET)form = ImageCreateForm(initial=request.GET)
【问题讨论】:
-
这里至少有3个问题,理想情况下应该是1个。 (最好单独询问他们,以增加获得答案的机会。)
-
@TinyInstance 感谢您的指点。我只是认为,如果所有问题都与同一个问题有关,那么在同一个帖子中提问会更容易。
标签: python django forms django-forms