簡體   English   中英

Django 表單發布但不顯示數據

[英]Django Form Post but doesn't display data

我正在做一個項目,但我有點卡在一個問題上。 我的 Django 發布表單沒有任何錯誤,但是每次我提交表單時,它都會按應有的方式重定向,但不顯示任何內容。 我有 5 個相同類型的 forms,但只有其中一個可以做到。

下面的代碼片段

視圖.py

########################## PRESCRIPTION #####################################################
def patients_list(request):
    context = {'patients_list': Prescription.objects.all()}
    return render(request, 'dashboard/patients_list.html', context)


def patients_form(request, id=0):
    if request.method == 'GET':
        if id == 0:
            pform = PatientsForm()
        else:
            prescription = Prescription.objects.get(pk=id)
            pform = PatientsForm(instance=prescription)
        return render(request, 'dashboard/patients_form.html', {'pform': pform})
    else:
        if id == 0:
            pform = PatientsForm(request.POST)
        else:
            prescription = Prescription.objects.get(pk=id)
            pform = PatientsForm(request.POST, instance=prescription)
        if pform.is_valid():
            pform.save()
        return redirect('/list')

網址.py

########################## PRESCRIPTION #####################################################
    path('form', views.patients_form, name='patients_form'),
    path('list', views.patients_list, name='patients_list'),
    path('update_patient/<str:id>/', views.patients_form, name="update_patient"),
    path('patients_delete/<str:id>/', views.patients_delete, name="patients_delete"),
########################## END PRESCRIPTION #####################################################

患者表格.html

<form action="" method="POST">
                                {% csrf_token %}
                                <div class="form-group">
                                  {{pform.first_name|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.last_name|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.CNI|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.gender|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.marital_status|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.telephone1|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.telephone2|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.town|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.address|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.occupation|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.status|as_crispy_field}}
                                </div>
                                <div class="row">
                                  <div class="col md 6">
                                    <button class="btn btn-success my-4" type="submit"> <i class="flaticon-381-database"> </i> Submit</button>
                                  </div>
                                  <div class="col md 6">
                                    <a href="{% url 'patients_list' %}" class="btn btn-secondary btn-block">Back To List
                                      <i class="fas fa-stream"></i>
                                    </a>
                                  </div>
                                </div>
                              </form>

Forms.py

class PatientsForm(forms.ModelForm):

    class Meta:
        model = Prescription
        fields = '__all__'
        labels = {
            'first_name': 'First Name',
            'last_name': 'Last Name'
        }

患者列表.html

{% for prescription in patients_list %}
            <tbody>
              <tr>
                <td>
                  <div class="custom-control custom-checkbox">
                    <input
                      type="checkbox"
                      class="custom-control-input"
                      id="customCheckBox2"
                      required=""
                    />
                    <label
                      class="custom-control-label"
                      for="customCheckBox2"
                    ></label>
                  </div>
                </td>
                <td>{{prescription.id}}</td>
                <td>{{prescription.date_added}}</td>
                <td>{{prescription.first_name}}</td>
                <td>{{prescription.last_name}}</td>
                <td>{{prescription.age}}Years</td>
                <td>{{prescription.doctor}}</td>
                <td>{{prescription.town}}</td>
                <td>{{prescription.gender}}</td>
                <td>
                  {% if prescription.status == 'New Patient' %}
                  <span class="badge badge-outline-primary">
                    <i class="fa fa-circle text-primary mr-1"></i>
                    {{prescription.status}}
                  </span>
                  {% elif prescription.status == 'In Treatement' %}
                  <span class="badge badge-warning light">
                    <i class="fa fa-circle text-warning mr-1"></i>
                    {{prescription.status}}
                  </span>
                  {% elif prescription.status == 'Recovered' %}
                  <span class="badge badge-info light">
                    <i class="fa fa-circle text-info mr-1"></i>
                    {{prescription.status}}
                  </span>
                  {% endif %}
                </td>
                <td>
                    <a href="{% url 'update_patient' prescription.id %}" class='btn text-secondary px-0'>
                        <i class="fa fa-pencil fa-fw"></i> Edit 
                    </a>
                </td>
                <td>
                  <form action="{% url 'patients_delete' prescription.id %}" method='post' class='d-inline'>
                    {% csrf_token %}
                    <button class="btn text-warning px-0" type="submit"><i class="fa fa-trash-o fa-fw"></i> Delete
                    </button>
                  </form>
                </td>
              </tr>
            </tbody>
            {% endfor %}

謝謝您的幫助

請嘗試在您的情況下使用 DGCBV createViewupdateView 它可以好得多。 更多信息: https://docs.djangoproject.com/en/4.1/ref/class-based-views/flattened-index/#editing-views

在你的情況下:

def patients_form(request, id=0):
    if request.method == 'GET':
        # some staff on get without return 
    else:
        # some staffon post
        if pform.is_valid():
            pform.save()
            return redirect('/list')
    return render(request, 'dashboard/patients_form.html', {'pform': pform})

在此代碼中,如果表單無效,則返回表單渲染。 否則應保存實例,然后轉到'/list'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM