Django如何将POST保存到表单中?
Posted
技术标签:
【中文标题】Django如何将POST保存到表单中?【英文标题】:Django how to save POST into form? 【发布时间】:2020-07-02 16:59:01 【问题描述】:我正在尝试将 POST 保存到我的表单中。
views.py
def index(request):
if request.method == 'POST':
print('!PRINT request.POST')
print(request.POST)
form = PostForm(request.POST, request.FILES)
print('!PRINT form')
print(form)
if form.is_valid():
form.save()
return redirect('/')
返回: !PRINT 请求.POST
~'title': ['Bart', 'Mat'], 'Create Match': ['Submit']>
!打印表格
~name="title" value="Mat" maxlength="200" 需要 id="id_title"
~name="title1" class="errorlist" 此字段为必填项。
forms.py
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = '__all__'
models.py
class Post(models.Model):
title = models.CharField(max_length=200)
title1 = models.CharField(max_length=200)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
list.html
<form method="POST" enctype="multipart/form-data" action="/">
% csrf_token %
form.title
form.title
<input type="submit" name="Create Match">
</form>>
【问题讨论】:
您的模板文件是什么样的?和 PostForm 类? @Gers 感谢您的回复我添加代码 这可能只是一个错字,但似乎您在 list.html 中重复了 form.title 字段两次(我猜第二个应该是 form.title1),所以实际上没有数据传递给 form.title1 【参考方案1】:您没有将值传递给您的表单,没有要保存的数据
试试这样的:
def index(request):
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
new_post = name_of_your_model(
field1=value_you_want_to_safe,
field2=value_you_want_to_safe,
...
)
new_post.save()
return redirect('/')
【讨论】:
【参考方案2】:试试这个sn-p,
在views.py中
def index(request):
form = PostForm()
if request.method == 'POST':
form = PostForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('/')
return render(request,'path_to/html_template.html',context='form':form)
在您的 html_template.html 中
<form method="POST" enctype="multipart/form-data" >
%csrf_token%
% form.as_p %
<button type="submit">Submit</button>
</form>
【讨论】:
以上是关于Django如何将POST保存到表单中?的主要内容,如果未能解决你的问题,请参考以下文章