无法使用 Django 表单保存数据

Not able to save data using Django form

我堆叠。我尝试了很多想法。我想在我的主页中放置 2 个表格。 index.html 中的模型、表单、ModelForm、save()、urls.. 我认为一切正常。但是提交按钮什么都不做。

#models.py
from django.db import models

class Iletisim(models.Model):
    DURUM = [
        ('KT', 'Keşif Talebi'),
        ('AB', 'Arıza Bildirimi'),
        ('IL', 'İletişimden'),
    ]
    SINIF = [
        ('Konut', (
            ('SI', 'Site '),
            ('DA', 'Apartman Dairesi'),
            ('VI', 'Yazlık/Bağ/Villa'),
        )
         ),
        ('İşyeri', (
            ('OF', 'Ofis/Büro/Dükkan'),
            ('FA', 'Fabrika/Şantiye/Otel/Okul'),
        )
         ),
        ('DG', 'Diğer'),
    ]
    name    = models.CharField(max_length=100, verbose_name="Ad/Soyad")
    phone   = models.CharField(max_length=100, verbose_name="Telefon")
    address = models.CharField(max_length=250, verbose_name="Adresi")
    message = models.CharField(max_length=1000, verbose_name="Mesaj")
    email   = models.EmailField(max_length=40, verbose_name="E-Posta")
    province= models.CharField(max_length=40,verbose_name="Şehir")
    tarih   = models.DateTimeField(default=None)
    basvuru = models.CharField(max_length=2, choices=DURUM)
    sinif   = models.CharField(max_length=2, choices=SINIF)

    class Meta:
        ordering = ["tarih", "email"]
        verbose_name = "Mesaj"
        verbose_name_plural = "Mesajlar"

    def __str__(self):
        return self.basvuru

我的表单文件夹

from django.shortcuts import redirect, render
from django.forms import ModelForm
from apps.giris.models import Iletisim

class Kesif_Form(ModelForm):
    class Meta:
        model = Iletisim
        fields = '__all__'


def kesif_kayit(request):

    if request.method=='POST':
        form = Kesif_Form(request.POST)

        if form.is_valid():
            yeni_kesif      = Iletisim()
            yeni_kesif.name = request.POST.get("name")
            yeni_kesif.phone = request.POST.get("phone")
            yeni_kesif.address = request.POST.get("address")
            yeni_kesif.message = request.POST.get("message")
            yeni_kesif.email = request.POST.get("email")
            yeni_kesif.province = request.POST.get("province")
            yeni_kesif.tarih = request.POST.get("tarih")
            yeni_kesif.basvuru = request.POST.get("basvuru")
            yeni_kesif.sinif = request.POST.get("sinif")

            yeni_kesif.save()
            return redirect('index')
    else:
        form = Kesif_Form()

    context={'form' : form}
    return render(request,'index.html',context)

主要class

...
from forms.formlar import Kesif_Form

class Anasayfa_View(TemplateView, Kesif_Form):
    template_name = 'index.html'

    def get_context_data(self, **kwargs):
    ...
        context['kform']        = Kesif_Form
    ...
        return context

index.html

...
{{ kform.errors }}
<form action="{% url 'kesif' %}" method="POST" class="php-email-form php-email-form animate__animated animate__fadeInRight">

    {{ kform.errors }}
    {{ kform }}
    <input type="submit" value="gir">
</form>
...

urls.py

...
from forms.formlar import kesif_kayit

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', Anasayfa_View.as_view(), name='grsndx'),
    path('kesif/', kesif_kayit, name='kesif'),
    path('<str:ktgr>/', Detaylar_View.as_view(), name='dtyndx'),
    path('<str:ktgr>/<str:bslk>/', Detay_View.as_view(), name='dtydty'),
]

提交无效,表格中的每个字段,我想要 2 个表格,但我没有工作。 求助..

结构

-project
  -apps
    -giris
       -models.py
    +detay
    ...
  +env
  -fls
     -settings
     -urls
  -forms
     -formlar.py
     ...
  -templates
     -index.html
     ...
  -manage.py
  ...

如果您使用的是 Django 模型表单,则必须首先创建表单 class

class Kesif_Form(ModelForm):
    class Meta:
        model = Iletisim
        fields = '__all__'#here you to defined specific you field or all the field

比你必须这样提交

def kesif_kayit(request):

    if request.method=='POST':
        form = Kesif_Form(request.POST)

        if form.is_valid():
            form.save()
            return redirect('index')
    else:
        form = Kesif_Form()

    context={'form' : form}
    return render(request,'index.html',context)

您没有手动保存Django Model Form会为您保存。