如何从views.py中的Django模板获取变量的值?

时间:2020-03-12 08:31:09

标签: python django django-templates

我在django工作,想在views.py中传递值 我的代码是

模板

     {% for doctor in doctor_list %}
       {% if citysearch == doctor.city %}
         <h1>Name of doctor is </h1>
          <form class="form" method="POST">
                  {% csrf_token %}
             <input type="submit", class="btn view", name="{{doctor.contactNumber}}" value="View Profile">
          </form>
        {% endif %}
        {% endfor %}

视图

    if request.method == 'POST':
        selectdocnum = request.POST.get["doctor.contactNumber"]
        print(selectdocnum)
        return redirect('patientPannel')

这没有返回doctor.contactNumber的值,并且错误是方法对象不可下标

4 个答案:

答案 0 :(得分:0)

doctor.contactNumber是一个,而不是用于查找值或用作输入字段名称的键。给输入字段一个更好的名称,然后改用它。您还使用了错误的输入类型,如果不希望对其进行编辑,请使用hidden,如果可以,请使用text之类的东西。

<input type="hidden" name="contactNumber" value="{{doctor.contactNumber}}">

request.POST.get("contactNumber")

答案 1 :(得分:0)

这是错误的

<input type="submit", class="btn view", name="{{doctor.contactNumber}}" value="View Profile">

我认为您必须这样做

 {% for doctor in doctor_list %}
   {% if citysearch == doctor.city %}
     <h1>Name of doctor is </h1>
      <form class="form" method="POST">
              {% csrf_token %}
         <input type="text" value="{{doctor.contactNumber}}" name="doctorcontactnumber">
         <input type="submit" class="btn view" value="View Profile">
      </form>
    {% endif %}
    {% endfor %}

您的观看次数

    if request.method == 'POST':
    selectdocnum = request.POST.get["doctorcontactnumber"]
    print(selectdocnum)
    return redirect('patientPannel')

答案 2 :(得分:0)

这很正常,request.POST.get是一种方法。使用括号。正确的调用是:

selectdocnum = request.POST.get("doctorcontactnumber")

对于您的输入,您混杂了namevalue。而是这样做:

<input type="hidden" name="doctorcontactnumber" value="{{doctor.contactNumber}}">

答案 3 :(得分:0)

<input type="submit", class="btn view", name="number" value="{{doctor.contactNumber}}">
if request.method == 'POST':
    selectdocnum = request.POST.get("number")
    print(selectdocnum)
    return redirect('patientPannel')

代替价值,您必须使用{{doctor.contactNumber}},并且必须使用名称(request.POST.get(“数字”))获取数据,然后它将获取数据