在Django的POST数据中传递值和表单

时间:2018-03-26 01:27:20

标签: python django

当我在HTML中呈现表单时,我使用此视图。 patient_id用于表示签入的患者和名称显示等。

def Checkin(request, patient_id):
    patient = get_object_or_404(PatientInfo, pk=patient_id)
    form = forms.PatientCheckinForm()
    return render(request, 'patientRecords/checkin.html', {'patient': patient, 'form':form})

当我提交填写为POST方法的患者表格时,我仍然需要访问patient_id。目前,这是接受填充表格的视图:

def CheckinSubmit(request):
if request.method == 'POST':
    form = forms.PatientCheckinForm(request.POST, request.FILES)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.date_time_of_checkin = dt.now()
        instance.patient = patient.patient_id
        instance.save()
        return redirect('patientRecords/index.html')

我想将instance.patient设置为来自Checkin视图的患者一部分的patient_id。有没有办法将患者数据与POST方法一起传回,还是有另外一种方法可以做到这一点?

供参考,这是我的模板,我使用的是ModelForm而不是表格。

{% block content %}

<div class="container">
  <h1>Patient Checkin</h1>
  <h2>{{patient.first_name}} {{patient.last_name}}</h2>
</div>
<div class="container">
  <form  action="{% url 'patientRecords:checkinsubmit' %}" method="POST" class="form">
    {% csrf_token %}
    {% bootstrap_form form %}
    {% buttons %}
        <button type="submit" class="btn btn-primary">Submit</button>
    {% endbuttons %}
  </form>
</div>

{% endblock %}

提前致谢!

2 个答案:

答案 0 :(得分:2)

您应该只需在表单中添加隐藏的输入即可捕获患者ID:

{% block content %}

<div class="container">
  <h1>Patient Checkin</h1>
  <h2>{{patient.first_name}} {{patient.last_name}}</h2>
</div>
<div class="container">
  <form  action="{% url 'patientRecords:checkinsubmit' %}" method="POST" class="form">
    <input type="hidden" name="patient_id" value="{{patient.patient_id}}" />
    {% csrf_token %}
    {% bootstrap_form form %}
    {% buttons %}
        <button type="submit" class="btn btn-primary">Submit</button>
    {% endbuttons %}
  </form>
</div>

{% endblock %}

(请注意,这假设可以从patient_id对象的patient属性访问患者ID。)

然后,在CheckinSubmit方法中,您可以通过request.POST.get('patient_id')

访问此值

或者,您的签到表单似乎会在URL中加载患者ID。在CheckinSubmit方法中,您应该可以通过request.META.HTTP_REFERER属性访问此网址。然后,您可以解析该网址(例如,使用request.META.HTTP_REFERER.split('/')[len(request.META.HTTP_REFERER.split('/')) - 1]提取患者ID。

答案 1 :(得分:0)

示例

<form method="post" action = "{% url 'user_search_from_group' %}"> 
      <div class="module-option clearfix">
           <div class="input-append pull-left">
                <input type="hidden" name="groupname" value="{{ gpname }}" />
                {% csrf_token %}
                <input type="text" class="span3" placeholder="Filter by name" id="username3" name="username3" required>
                 <button type="submit" class="btn" name="submit">
                         <i class="icon-search"></i>
                 </button>
           </div>
      </div>
</form>

在这里,隐藏字段用于沿表格传递值。

def user_search_from_group(request):
    if request.method == 'POST':
        username3 = request.POST.get('username3')
        gname = request.POST.get('groupname')

使用请求,我们使用view内部的值