由于设计目的,我需要单独呈现Django表单字段。它看起来不错,但如果我点击提交,它不会做任何事情,只是一个短暂的眨眼。如果我呈现整个{{ form }},它就能正常工作。我不知道我做错了什么。你们能帮帮我吗?
html
<form method = "POST">
<div class="container w-75 bg-light rounded-3 pt-3">
<div class="form-group">
{% csrf_token %}
{% comment %} {{ form }} {% endcomment %}
<div class="row">
<div class="col-4 border-right border-primary p-3">
<h6 class="text-primary">1. text.</h6>
{{ form.att_v001 }}<br>
</div>
<div class="col-4 border-primary pt-3 pl-4">
<h6 class="text-primary">2.text.</h6>
{{ form.att_v002 }}<br>
</div>
<div class="col-4 border-left border-primary pt-3 pl-4">
<h6 class="text-primary">3. text.</h6>
{{ form.att_v003 }}<br>
</div>
<div class="col-4 border-left border-primary pt-3 pl-4">
<h6 class="text-primary">4. text.</h6>
{{ form.att_v004 }}<br>
</div>
<div class="col-4 border-left border-primary pt-3 pl-4">
<h6 class="text-primary">5. text.</h6>
{{ form.att_v005 }}<br>
</div>
<div class="col-4 border-left border-primary pt-3 pl-4">
<h6 class="text-primary">6. text.</h6>
{{ form.att_v006 }}<br>
</div>
</div>
<button class="btn btn-large btn-primary" type="submit">Mentés</button>models.py
class Attitud(models.Model):
def __str__(self):
return str(self.user_name)
class question(models.IntegerChoices):
Nem_jellemző = 0
Néha_jellemző = 1
Nagyon_jellemző = 2
user_name = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
att_v001 = models.IntegerField(default=0, null=True, blank=False, choices=question.choices)
att_v002 = models.IntegerField(default=0, null=True, blank=False, choices=question.choices)
att_v003 = models.IntegerField(default=0, null=True, blank=False, choices=question.choices)
att_v004 = models.IntegerField(default=0, null=True, blank=False, choices=question.choices)
att_v005 = models.IntegerField(default=0, null=True, blank=False, choices=question.choices)
att_v006 = models.IntegerField(default=0, null=True, blank=False, choices=question.choices)forms.py
class AttitudForm(forms.ModelForm):
class Meta:
model = Attitud
fields = '__all__'
widgets = {
'att_v001': forms.RadioSelect(attrs={'class': 'custom-radio-list'}),
'att_v002': forms.RadioSelect(attrs={'class': 'custom-radio-list'}),
'att_v003': forms.RadioSelect(attrs={'class': 'custom-radio-list'}),
'att_v004': forms.RadioSelect(attrs={'class': 'custom-radio-list'}),
'att_v005': forms.RadioSelect(attrs={'class': 'custom-radio-list'}),
'att_v006': forms.RadioSelect(attrs={'class': 'custom-radio-list'}),
}views.py
def stressz_item(request):
form = AttitudForm(request.POST or None)
if form.is_valid():
form.save()
form.user_name = request.user
return redirect('/stressz/main.html')
return render(request, 'stressz/attitud-form.html', {'form':form})
class AttitudCreateView(CreateView):
model = Attitud
form_class = AttitudForm
template_name = 'stressz/attitud-form.html'
def form_valid(self, form):
form.instance.user_name = self.request.user
return super().form_valid(form)发布于 2021-05-04 22:14:20
我认为您缺少html表单中的action属性。
所以,
action="{% url 'application_name: url_path_name‘%}"
路径(‘url_path/’,views.view_name,name='url_path_name'),
注意,您可以将URLConf文件中的视图(通常是默认的urls.py)链接到模板中呈现的表单。
https://stackoverflow.com/questions/67389648
复制相似问题