【发布时间】:2021-12-29 09:11:08
【问题描述】:
我正在尝试在 django 中显示一个表单并动态预填充它。 我希望我的示例新闻收集网站的用户修改条目。
我有我的手动输入表单类
#forms.py
class ManualInputForm(forms.Form):
source = forms.CharField(label="Source:", widget = forms.TextInput(attrs={'size': 97}))
topic = forms.CharField(label="Topic:", widget = forms.TextInput(attrs={'size': 97}))
news = forms.CharField(widget = forms.Textarea(attrs={"rows":5, "cols":100}))
link = forms.CharField(label="Link (optional):", required = False, widget = forms.TextInput(attrs={'size': 97}))
在 HTML 中我将手动进行,因为我想使用来自views.py 中相关函数的数据预填充所有字段。
#html file
<form method="post" class="form-group">
{% csrf_token %}
<div class="input-group mb-3">
<div class="container">
{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }}
<br>
{{ field }}
</div>
{% endfor %}
</div>
<div class="input-group">
<p> </p>
<button type="submit" class="btn btn-success" name="Submit">Save</button>
</div>
</div>
</form>
我该怎么做?快把我逼疯了o.O 我想继续使用 django 的表单,因为它集成了错误管理器(并非所有字段都是必需的,但有些字段是必需的,我希望 django 继续管理它)。
感谢您的建议!
编辑: 根据要求,我将发布 views.py 相关功能:
#views.py
def editnews(response, id):
form = ManualInputForm(response.POST or None)
#tableToView is a dataframe retrieved by querying an external DB
#data cannot be stored in django's buit in because of reasons ;-)
#checking the dataframe is correct and it is:
#IT IS MADE OF A SINGLE LINE
print(tableToView)
#THIS IS PROBABLY NOT THE WAY TO DO IT
form.source = tableToView.loc[0, 'Source']
form.topic = tableToView.loc[0, 'Topic']
form.news = tableToView.loc[0, 'News']
form.link = tableToView.loc[0, 'Link']
return render(response, 'manual/editnews.html', {"form":form})
图像中的文本应预先填充。
【问题讨论】:
-
我把 javascript 作为一个标签,因为也许它可以用 lil' 脚本来实现。但我真的不知道(我是这个新的“网络”事物的新手 ;-)
-
你能用
views.py的相关部分更新你的帖子吗? -
按照建议更新帖子
标签: javascript python django