我是软件开发人员的新手,请耐心等待。 我正在尝试从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
答案 0 :(得分:0)
据我了解,您想从表单中返回用户检查的值;为此,您需要使用Django Forms。有关更多详细信息,请阅读文档: