且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在Django中如何在不使用form.py的情况下从html表添加数据

更新时间:2023-09-10 18:44:34

,您可以在视图中按其名称访问每个html表单输入.参见下面的代码:

you can access to your each html form inputs by their name in view. see below code:

模型

from django.db import models
from django import forms

class MedicalSchool(models.Model):
    school_name = models.CharField(max_length=100)
    m_pass_out = models.DateField(max_length=100)
    doctor_profile = models.ForeignKey(DoctorProfile, on_delete=models.CASCADE)
    created_at = models.DateTimeField()
    updated_at = models.DateTimeField(blank=True, null=True)

class Meta:
    db_table = 'medical_school'

class MedicalSchoolForm(forms.ModelForm):
    class Meta:
        model = MedicalSchool
        fields = ['school_name', 'm_pass_out', 'doctor_profile']

观看次数

from django.contrib import messages
from django.shortcuts import redirect, render
from . import models

def MedicalSchool(request):
    url = request.META.get('HTTP_REFERER')  # get last url
    if request.method == 'POST':
        form = models.MedicalSchoolForm(request.POST) # access to ModelForm
        if form.is_valid():
        data = models.MedicalSchool() # create a instance of your Model
        data.school_name = form.cleaned_data['school_name'] # 'school_name' is the name that we specified in html form input
        data.m_pass_out = form.cleaned_data['m_pass_out'] # 'm_pass_out' is the name that we specified in html form input
        data.doctor_profile_id = form.cleaned_data['doctor_profile'] # 'doctor_profile' is the name that we specified in html form input
        data.save()
        return redirect(url)
    else:
        messages.warning(request, form.errors)
        return redirect(url)
    context = {'DoctorProfile': models.DoctorProfile.objects.all()}
return render(request, 'MedicalSchool.html', context)

网址

from django.urls import path
from . import views

app_name = 'School'
urlpatterns = [
    path('', views.MedicalSchool, name='MedicalSchool'),
    ...
]

MedicalSchool.html

<form action="{% url 'School:MedicalSchool' %}" method="POST"> 
{% csrf_token %}

<input type="text" name="school_name" placeholder="school name" required>
<input type="text" name="m_pass_out" placeholder="m pass out" required>

<select name='doctor_profile'>
    {% for dr in DoctorProfile %}
        <option name="doctor_profile" value="{{ dr.id }}">{{ dr.title}}</option>  <!-- Match your code with {{ dr.title}} -->
    {% endfor %}
</select>

<button type="submit"> Submit </button>

</form>

让我知道是否存在问题