首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我使用单个字段,Django就不会提交我的表单

如果我使用单个字段,Django就不会提交我的表单
EN

Stack Overflow用户
提问于 2021-05-04 17:42:17
回答 1查看 37关注 0票数 0

由于设计目的,我需要单独呈现Django表单字段。它看起来不错,但如果我点击提交,它不会做任何事情,只是一个短暂的眨眼。如果我呈现整个{{ form }},它就能正常工作。我不知道我做错了什么。你们能帮帮我吗?

html

代码语言:javascript
复制
<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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2021-05-04 22:14:20

我认为您缺少html表单中的action属性。

所以,

  1. 添加了action属性,例如:

action="{% url 'application_name: url_path_name‘%}"

  1. 将它添加到您的URLConf中,例如:

路径(‘url_path/’,views.view_name,name='url_path_name'),

注意,您可以将URLConf文件中的视图(通常是默认的urls.py)链接到模板中呈现的表单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67389648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档