Python 3.x Django Python POST方法未写入数据库
我现在有一个问题,我的POST方法没有写入数据库,也没有显示在管理网站 views.py文件在到达“if form.is_valid()”之前一直有效,但仅此而已。我做错了什么? 请帮忙,我花了很多时间试图寻找答案,但没有结果 代码如下 url.pyPython 3.x Django Python POST方法未写入数据库,python-3.x,django,post,django-models,django-forms,Python 3.x,Django,Post,Django Models,Django Forms,我现在有一个问题,我的POST方法没有写入数据库,也没有显示在管理网站 views.py文件在到达“if form.is_valid()”之前一直有效,但仅此而已。我做错了什么? 请帮忙,我花了很多时间试图寻找答案,但没有结果 代码如下 url.py path('weekly/', user_views.weekly, name='weekly'), views.py def weekly(request): if request.method == 'POST': f
path('weekly/', user_views.weekly, name='weekly'),
views.py
def weekly(request):
if request.method == 'POST':
form = SubscriptionForm(request.POST)
print('I got this far 3!')
if form.is_valid():
form.save()
messages.success(request, 'Thank you for your payment!')
return redirect('classes')
else:
return render(request, 'clubex/weekly.html', {'title': '1 Week Free'})
else:
return render(request, 'clubex/weekly.html', {'title': '1 Week Free'})
models.py(这些名称是否必须与HTML文档中的“id”匹配?)
py(这些名称是否必须与HTML文档中的“id”匹配?)
html(注意到验证js文件的链接)
该表单无效。使用sub_类型和状态,您将传递一个
choicefield
,模型需要一个charfield
您的表格必须是:
class SubscriptionForm(forms.ModelForm):
firstName = forms.CharField(
required=True,
label="First Name",
widget=forms.TextInput( attrs = {
'type':"text",
'placeholder':"First name",
'class':'form-control', # html input class
})
)
sub_type = forms.ChoiceField(
required=True,
label="Subscription Type",
choices= (
('Option 1', 'Choose'),
('Option 2', 'Weekly $ Free'),
...
),
widget=forms.Select( attrs = {
'class':'your-css-class'
})
)
...
将表单传递给html
def weekly_get(request):
form = SubscriptionForm()
return render('weekly.html',{'form':form })
<form method="post" action="/weekly/" class="needs-validation">
{% csrf_token %}
{% for field in form %}
<div class="row">
<div class="col-md-6 mb-3">
{{field.label_tag}}
{{field}}
</div>
</div>
{% endfor %}
</form>
然后,你的html
def weekly_get(request):
form = SubscriptionForm()
return render('weekly.html',{'form':form })
<form method="post" action="/weekly/" class="needs-validation">
{% csrf_token %}
{% for field in form %}
<div class="row">
<div class="col-md-6 mb-3">
{{field.label_tag}}
{{field}}
</div>
</div>
{% endfor %}
</form>
{%csrf_令牌%}
{%形式的字段为%}
{{field.label_tag}
{{field}}
{%endfor%}
表单无效。使用sub_类型和状态,您将传递一个choicefield
,模型需要一个charfield
您的表格必须是:
class SubscriptionForm(forms.ModelForm):
firstName = forms.CharField(
required=True,
label="First Name",
widget=forms.TextInput( attrs = {
'type':"text",
'placeholder':"First name",
'class':'form-control', # html input class
})
)
sub_type = forms.ChoiceField(
required=True,
label="Subscription Type",
choices= (
('Option 1', 'Choose'),
('Option 2', 'Weekly $ Free'),
...
),
widget=forms.Select( attrs = {
'class':'your-css-class'
})
)
...
将表单传递给html
def weekly_get(request):
form = SubscriptionForm()
return render('weekly.html',{'form':form })
<form method="post" action="/weekly/" class="needs-validation">
{% csrf_token %}
{% for field in form %}
<div class="row">
<div class="col-md-6 mb-3">
{{field.label_tag}}
{{field}}
</div>
</div>
{% endfor %}
</form>
然后,你的html
def weekly_get(request):
form = SubscriptionForm()
return render('weekly.html',{'form':form })
<form method="post" action="/weekly/" class="needs-validation">
{% csrf_token %}
{% for field in form %}
<div class="row">
<div class="col-md-6 mb-3">
{{field.label_tag}}
{{field}}
</div>
</div>
{% endfor %}
</form>
{%csrf_令牌%}
{%形式的字段为%}
{{field.label_tag}
{{field}}
{%endfor%}
widget=forms.TextInput()中应该放什么?ChoiceField的widget属性是widget=forms.Select()
。请看我的编辑是的,我看到了,谢谢。我有工作的形式,但它仍然没有保存到模型在管理网站。这是现在的工作。我添加了“if form.is_valid”条件,效果很好。不过,还要感谢你一件事,在管理网站上,我如何显示Choicefield。目前,如果我选择“每周$Free”,将显示“选项2”。我也解决了上述问题。谢谢你的帮助。非常感谢。我应该在widget=forms.TextInput()中输入什么?ChoiceField的widget属性是widget=forms.Select()
。请看我的编辑是的,我看到了,谢谢。我有工作的形式,但它仍然没有保存到模型在管理网站。这是现在的工作。我添加了“if form.is_valid”条件,效果很好。不过,还要感谢你一件事,在管理网站上,我如何显示Choicefield。目前,如果我选择“每周$Free”,将显示“选项2”。我也解决了上述问题。谢谢你的帮助。非常感谢。