如何从HTML接收请求并在我的视图和模型端处理它

时间:2018-10-04 12:54:29

标签: python html django oracle

我是软件开发人员的新手,请耐心等待。 我正在尝试从html代码接收请求,并获取shift代码值,该值可以是Shift1,Shift2或Shift3。

我正在使用只读的oracle db,这就是为什么我使用原始查询的原因。 基本上,我想通过html代码过滤表格结果,通过根据用户选择的“ Shift”结果,现在我将显示所有班次结果,如何对其进行过滤?

请在我的views.py和models.py上告诉我如何做

HTML代码:

<div id="page-content-wrapper">

        <div class="container-fluid">
            <a href="#menu-toggle" class="btn btn-secondary" id="menu-toggle"><< Menu</a>
            <h4 align="right" >{{ date|date:'Y-m-d H:i' }} </h4>

            <h1>SMD/PBA System Management</h1>              

                <div class="container-fluid">


                Select the shift
               <form action="{ %url 'show_list' %}" method="post">
                  <div class="form-row align-items-center">
                    <div class="col-auto my-1">

                      <select class="custom-select mr-sm-2" id="inlineFormCustomSelect" name="shift">
                        <option selected>Shift 1</option>
                        <option value="1">Shift 1</option>
                        <option value="2">Shift 2</option>
                        <option value="3">Shift 3</option>
                        <option value="ALL">ALL</option>
                      </select>
                     </div>
                    <button type="submit" value="Submit" class="btn btn-info">Search</button>
                   </div>
                </form>

                <br>


                <h4>Retest IM</h4>
                    <table align="left" border="2" class="table table-dark">
                     <tr bgcolor="#0080ff">
                        <td align="center">Date</td>
                        <td align="center">Shift</td>
                        <td align="center">Line</td>
                        <td align="center">Model</td>
                        <td align="center">Insp QTY</td>
                        <td align="center">Retest QTY</td>
                        <td align="center">Index PPM</td>

                        {% for instance in query %}
                                {% if instance.DEF_INDEX_PPM > 5000 %}
                                <tr bgcolor="#ff4d4d">
                                {% else %}
                                <tr>
                                {% endif %}
                                    <td align="center">{{ instance.WORK_YMD }} </td>
                                    <td align="center">{{ instance.SHIFT_CODE }} </td>
                                    <td align="center">{{ instance.LINE_NM }} </td>
                                    <td align="center">{{ instance.MODEL_NM }} </td>
                                    <td align="center">{{ instance.SMD_INSP_QTY }} </td>
                                    <td align="center">{{ instance.SMD_RETEST_DEFT_QTY }} </td>
                                    <td align="center">{{ instance.DEF_INDEX_PPM|floatformat:0 }} </td>
                                </tr>

                        {% endfor %}


                     </tr>
                </table>
                <h4>Retest CE</h4>
                <table align="left" border="2" class="table table-dark">
                     <tr bgcolor="#0080ff">
                        <td align="center">Date</td>
                        <td align="center">Shift</td>
                        <td align="center">Line</td>
                        <td align="center">Model</td>
                        <td align="center">Insp QTY</td>
                        <td align="center">Retest QTY</td>
                        <td align="center">Index PPM</td>>


                        {% for instance in query2 %}
                               {% if instance.DEF_INDEX_PPM > 5000 %}
                                <tr bgcolor="#ff4d4d">
                                {% else %}
                                <tr>
                                {% endif %}
                                     <td align="center">{{ instance.WORK_YMD }} </td>
                                     <td align="center">{{ instance.SHIFT_CODE }} </td>
                                     <td align="center">{{ instance.LINE_NM }} </td>
                                     <td align="center">{{ instance.MODEL_NM }} </td>
                                     <td align="center">{{ instance.PBA_INSP_QTY }} </td>
                                     <td align="center">{{ instance.PBA_RETEST_DEFT_QTY }} </td>
                                     <td align="center">{{ instance.DEF_INDEX_PPM|floatformat:0 }} </td>

                                </tr>

                        {% endfor %}
                     </tr>
                </table>

                </div>



        </div>

    </div>
    <!-- /#page-content-wrapper -->

Views.py代码:

from datetime import datetime

from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader

from .models import my_custom_sql2


# Create your views here.
def show_list(request):

    query2 = my_custom_sql2(self='my_custom_sql2')

    myDate = datetime.now()

    return render(request, 'monitoring.html', {'query2': query2, 'date': myDate})

models.py代码:

from django.db import models
from django.db import connection


# Create your models here.
def dictfetchall(cursor):
"Returns all rows from a cursor as a dict"
desc = cursor.description
return [
        dict(zip([col[0] for col in desc], row))
        for row in cursor.fetchall()
]




def my_custom_sql2(self):
with connection.cursor()as cursor:
import time
date = time.strftime('%Y%m%d')

            cursor.execute("""
                   select  A.WORK_YMD,
                           A.SHIFT_CODE,
                           --A.LINE_CODE,
                           B.LINE_NM,
                           A.MODEL_NM,
                           A.PBA_INSP_QTY,                          
                           A.PBA_RETEST_DEFT_QTY,                           
                          (A.PBA_RETEST_DEFT_QTY / A.PBA_INSP_QTY * 1000000) 
AS DEF_INDEX_PPM

                    from TBS_QM_TOTAL_PROC_DEFT A, TBM_MD_LINE B  

                    where  
                           A.WORK_YMD = %s  
                           AND A.LINE_CODE = B.LINE_CODE                                  
                           AND A.PBA_INSP_QTY > 0 
                           --AND A.SHIFT_CODE                            
                          ORDER BY DEF_INDEX_PPM DESC, B.LINE_NM ASC
                    """, [date])
    row = dictfetchall(cursor)

    cursor.close()
    return row

urls.py

from django.urls import path
from .views import show_list


urlpatterns = [
path('list/', show_list, name="show_list"),
]

[HTML屏幕:1

1 个答案:

答案 0 :(得分:0)

据我了解,您想从表单中返回用户检查的值;为此,您需要使用Django Forms。有关更多详细信息,请阅读文档:

https://docs.djangoproject.com/en/2.1/topics/forms/