[英]model forms were not generated automatically using django model forms
I'm creating Django forms using model forms because u I wanted the forms to be created automatically, but when I created this code the forms do not appear in the index.html page
模型.py
from django.db import models
class BaseCase(models.Model):
base_case_name = models.CharField(primary_key=True, max_length=255)
version = models.TextField(blank=True, null=True)
default = models.TextField(blank=True, null=True) # This field type is a guess.
class Meta:
managed = False
db_table = 'base_case'
forms.py
from django import forms
from SFP.models import *
class BaseCaseForm(forms.ModelForm):
class Meta :
model = BaseCase
fields='__all__'
视图.py
from django.shortcuts import render,redirect
from .models import *
from .forms import *
def addbc(self, request):
bcform=BaseCaseForm(request.POST)
bcform.save()
basecasename = bcform.cleaned_data['post']
version = bcform.cleaned_data['post']
default = bcform.cleaned_data['post']
bcform = BaseCaseForm()
return redirect('index.html')
args = {'bcform':bcform,
'basecasename': basecasename,
'version': version,
'default' :default}
return render(request, 'index.html', args)
索引.html
<!DOCTYPE html>
<html>
<head>
<title>S&FP</title>
</head>
<body>
<h1>Forms</h1>
{% csrf_token %}
{{ bcform }}
<input type="submit" value="add">
</body>
</html>
我认为这也很重要 urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index),
url(r'^$', views.addbc),
]
我期待表单字段会自动生成,但它们没有出现!
你的整体观点是错误的。像这样改变
def addbc(request):
bcform = BaseCaseForm()
if request.method == 'POST'
bcform=BaseCaseForm(request.POST)
if bcform.is_valid():
bcform.save()
return redirect('some_path') #redirect to some url not template
return render(request, 'index.html', {'bcform':bcform})
编辑:您的 html 中没有<form>
标签。添加此
<h1>Forms</h1>
<form method='post'>
{% csrf_token %}
{{ bcform }}
<input type="submit" value="add">
</form>
您的views.index
和views.addbc
使用相同的空路径更改如下
url(r'^addbc/^$', views.addbc),
如果您使用 django 2+,也请使用路径
您可以尝试 CreateView,它将为您的 model 创建 forms。 在文档中找到更多关于它的信息
在您的情况下,创建一个像这样的视图:
视图.py
class BaseCaseCreate(CreateView):
model = BaseCase
template_name = 'index.html'
success_url = reverse_lazy('app:home')
fields = ('base_case_name','version','default')
索引.html
<!DOCTYPE html>
<html>
<head>
<title>S&FP</title>
</head>
<body>
<h1>Forms</h1>
{% csrf_token %}
{{ form }}
<input type="submit" value="add">
</body>
我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.