Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django表单将数据保存到数据库_Python_Django_Django Forms - Fatal编程技术网

Python 使用Django表单将数据保存到数据库

Python 使用Django表单将数据保存到数据库,python,django,django-forms,Python,Django,Django Forms,“我的保存”按钮没有将用户输入的数据以django形式保存到数据库中,问题出在哪里 型号.py class Cemetery(models.Model): id = models.AutoField(primary_key=True) name=models.CharField(verbose_name="Cemetery Name",max_length=100) city=models.CharField(max_length=30) zipcode=mode

“我的保存”按钮没有将用户输入的数据以django形式保存到数据库中,问题出在哪里

型号.py

class Cemetery(models.Model):
    id = models.AutoField(primary_key=True)
    name=models.CharField(verbose_name="Cemetery Name",max_length=100)
    city=models.CharField(max_length=30)
    zipcode=models.CharField(max_length=5)
    date_created=models.DateTimeField(editable=False, auto_now_add=True)
    date_modified= models.DateTimeField(editable=False, auto_now=True)
    created_by=models.ForeignKey('auth.User')

    def __str__(self):
        return  str(self.id) +'-' + self.name + ' -  ' + self.city
class CemeteryForm(forms.ModelForm):
     class Meta:
        model=Cemetery
        fields=('name','city','zipcode',)
def cemetery_add(request):
    if request.method=="POST":
        form=CemeteryForm(request.POST)
        if form.is_valid():
            cemetery=form.save(commit=False)
            cemetery.name=request.name
            cemetery.city=request.city
            cemetery.zipcode=request.zipcode
            cemetery.created_by=request.user
            cemetery.date_created=timezone.now()
            cemetery.save()
            return redirect('cemetery_list')
    else:
        form=CemeteryForm
    return render(request,'heaven/edit_cemetery.html',{'form':form})
forms.py

class Cemetery(models.Model):
    id = models.AutoField(primary_key=True)
    name=models.CharField(verbose_name="Cemetery Name",max_length=100)
    city=models.CharField(max_length=30)
    zipcode=models.CharField(max_length=5)
    date_created=models.DateTimeField(editable=False, auto_now_add=True)
    date_modified= models.DateTimeField(editable=False, auto_now=True)
    created_by=models.ForeignKey('auth.User')

    def __str__(self):
        return  str(self.id) +'-' + self.name + ' -  ' + self.city
class CemeteryForm(forms.ModelForm):
     class Meta:
        model=Cemetery
        fields=('name','city','zipcode',)
def cemetery_add(request):
    if request.method=="POST":
        form=CemeteryForm(request.POST)
        if form.is_valid():
            cemetery=form.save(commit=False)
            cemetery.name=request.name
            cemetery.city=request.city
            cemetery.zipcode=request.zipcode
            cemetery.created_by=request.user
            cemetery.date_created=timezone.now()
            cemetery.save()
            return redirect('cemetery_list')
    else:
        form=CemeteryForm
    return render(request,'heaven/edit_cemetery.html',{'form':form})
视图.py

class Cemetery(models.Model):
    id = models.AutoField(primary_key=True)
    name=models.CharField(verbose_name="Cemetery Name",max_length=100)
    city=models.CharField(max_length=30)
    zipcode=models.CharField(max_length=5)
    date_created=models.DateTimeField(editable=False, auto_now_add=True)
    date_modified= models.DateTimeField(editable=False, auto_now=True)
    created_by=models.ForeignKey('auth.User')

    def __str__(self):
        return  str(self.id) +'-' + self.name + ' -  ' + self.city
class CemeteryForm(forms.ModelForm):
     class Meta:
        model=Cemetery
        fields=('name','city','zipcode',)
def cemetery_add(request):
    if request.method=="POST":
        form=CemeteryForm(request.POST)
        if form.is_valid():
            cemetery=form.save(commit=False)
            cemetery.name=request.name
            cemetery.city=request.city
            cemetery.zipcode=request.zipcode
            cemetery.created_by=request.user
            cemetery.date_created=timezone.now()
            cemetery.save()
            return redirect('cemetery_list')
    else:
        form=CemeteryForm
    return render(request,'heaven/edit_cemetery.html',{'form':form})
模板

{% extends 'heaven/base.html' %}

{% block content %}
    <!-- Edit Cemetery -->
    <h2>New Cemetery</h2>
    <form method="POST" class="cemetery-form">{% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class="save btn btn-default">Save</button>
    </form>
{% endblock %}
{%extends'seventh/base.html%}
{%block content%}
新坟场
{%csrf_令牌%}
{{form.as_p}}
拯救
{%endblock%}
当我按下保存按钮时,我收到的错误是: 属性错误位于/墓地\u添加/
“WSGIRequest”对象在表单中没有属性“name”

,您直接在请求中查找值

request.name
您需要查看表单的已清理数据

form.cleaned_data.get('name')
尽管如此,实际上并不需要这样做,因为已经从绑定表单设置了值

如果您真的想使用post数据,那么可以在post字典中找到它

request.POST.get('name')

简而言之,忽略重置这些值,只需添加所需的字段

cemetery=form.save(commit=False)
cemetery.created_by=request.user
cemetery.date_created=timezone.now()
cemetery.save()

在表单中,您直接在请求上查找值

request.name
您需要查看表单的已清理数据

form.cleaned_data.get('name')
尽管如此,实际上并不需要这样做,因为已经从绑定表单设置了值

如果您真的想使用post数据,那么可以在post字典中找到它

request.POST.get('name')

简而言之,忽略重置这些值,只需添加所需的字段

cemetery=form.save(commit=False)
cemetery.created_by=request.user
cemetery.date_created=timezone.now()
cemetery.save()

这一次成功了,我遇到了身份验证问题,因为我的登录会话已过期,我无法保存:

def cemetery_add(request):
if request.method=='POST':
    form=CemeteryForm(request.POST)
    if form.is_valid():
        cemetery=form.save(commit=False)
        cemetery.name=request.POST.get('name')
        cemetery.city=request.POST.get('city')
        cemetery.zipcode=request.POST.get('zipcode')
        cemetery.date_created=timezone.now()
        if request.user.is_authenticated:
            cemetery.created_by=request.user
        else:
            return login(request)
        cemetery.save()
        return redirect('cemetery_list')
else:
    form=CemeteryForm
return render(request,'heaven/edit_cemetery.html',{'form':form})

这一次成功了,我遇到了身份验证问题,因为我的登录会话已过期,我无法保存:

def cemetery_add(request):
if request.method=='POST':
    form=CemeteryForm(request.POST)
    if form.is_valid():
        cemetery=form.save(commit=False)
        cemetery.name=request.POST.get('name')
        cemetery.city=request.POST.get('city')
        cemetery.zipcode=request.POST.get('zipcode')
        cemetery.date_created=timezone.now()
        if request.user.is_authenticated:
            cemetery.created_by=request.user
        else:
            return login(request)
        cemetery.save()
        return redirect('cemetery_list')
else:
    form=CemeteryForm
return render(request,'heaven/edit_cemetery.html',{'form':form})

谢谢你的回答!我现在有点困惑,我尝试了不同的场景,但都没有成功。你的意思是忽略你提到的那4行,还是保留它们并删除其余的?您将如何重写视图.py?非常感谢您的回答!我现在有点困惑,我尝试了不同的场景,但都没有成功。你的意思是忽略你提到的那4行,还是保留它们并删除其余的?您将如何重写views.py?