gpt4 book ai didi

python - 为什么django表单数据提交后无法显示

转载 作者:行者123 更新时间:2023-11-30 23:05:28 29 4
gpt4 key购买 nike

提交表单(输入)后,会重定向到另一个页面(结果),并在这个结果页面显示表单信息。

现在的问题是,提交的信息没有显示在结果页面中。

我怀疑原因是因为在结果'views.py中,我想显示从输入提交的表单,但是表单的数据没有保存或者我不应该从模型中获取数据,我应该获取数据从 View 中,因此无法显示表格:

context['input'] = Input.objects.all()

我的猜测是否正确,请指正。预先感谢您的建议。

输入模型.py

class Input(models.Model):

company=models.CharField(max_length=100,default='Empty')
region=models.CharField(max_length=100,default='Empty')
start_date=models.DateField(auto_now=False, auto_now_add=False,default='Empty')
end_date=models.DateField(auto_now=False, auto_now_add=False,default='Empty')

输入——表单

class Inputform(forms.ModelForm):
company=forms.CharField()
regionlist = forms.ModelChoiceField(queryset=Result.objects.values('region').distinct())
start_date=forms.DateField(widget=DateInput(),required=True)
end_date = forms.DateField(widget=DateInput(),required=True)

class Meta:
model = Input
fields = ('company', 'region','start_date','end_date')
widgets = {
'start_date': forms.DateInput(attrs={'class':'datepicker'}),
'end_date': forms.DateInput(attrs={'class':'datepicker'}),
}

输入——html代码的一部分

<form action="result_list/" method="post">{% csrf_token %}

<!--enter company-->
<div class="field">
<p>Company:<input type="text" name="Company" value="{{company}}"/>
</div>


<!--select region-->
<div class="field" >
<label> Select the Region:
{{ form.regionlist }}
{% for region in form.regionlist.choices %}
<option value="{{ val }}" {% ifequal data.val val %}selected {% endifequal %}></option>
{% endfor %}
</label>
</div>
....
<div class="fieldWrapper">
<p><input type="submit" value="Submit" /></p></div>
</form>

输入-- View

from django.http import HttpResponseRedirect
from django.shortcuts import render,render_to_response,get_object_or_404
from inputform.forms import Inputform
from inputform.models import Input
from result.models import Result
from django.views.decorators.csrf import csrf_exempt
from django.views.generic.list import ListView

@csrf_exempt

def input(request):
if request.method == 'POST':
form = Inputform(request.POST)
if form.is_valid():
cd = form.cleaned_data
print (cd['company'])
form.save()
return redirect('result')

网址

from inputform import views
from django.views.generic.list import ListView
from inputform.views import input
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^result_list/$',ResultView.as_view(),name='result'),
(r'^input/$', RedirectView.as_view(url='/result_list/')),
}

结果--views.py

class ResultView(ListView):
context_object_name = 'result_list'
template_name = 'result_list.html'
queryset = Result.objects.all()

def get_context_data(self, **kwargs):
context = super(ResultView, self).get_context_data(**kwargs)
context['input'] = Input.objects.all()
return context

结果 -- html

{% for input_object in input %}
<table border="1" cellpadding="1">
<tr>
<td align="left">Company</td>
<td>{{input_object.company}}</td>
</tr>

<tr>
<td align="left">Region</td>
<td>{{input_object.region}}</td>
</tr>
...
</table>
{% endfor %}

最佳答案

你的代码看起来相当困惑。目前尚不清楚,您最初如何将空表单传递给输入模板。

但是,由于您没有将整个表单传递到模板,而是仅将 {{ form.regionlist }} 传递,因此可能会出现问题。因此您的输入无法将任何数据写入数据库。

像对区域列表字段所做的那样,渲染整个 {{ form }} 或每个字段。

此外,如果 forms.py 中的模型字段实际上并未以某种方式覆盖 models.py 中的原始字段,则无需复制该模型字段。

关于python - 为什么django表单数据提交后无法显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33129841/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com