如何在django中将输入页面(用户)映射到view.py



我是Django的新手。以下是Django的版本和使用的数据库

Django版本:2.1.15,django pyodbc azure==1.11.90,使用的sql server 2012

django管理员启动项目项

目标:从用户@itemnumber&将该输入提供给EXEC ValidateBusinessrule '@itemnumber',并在html页面中显示结果

设置.py连接

DATABASES =
{
'default':
{
'ENGINE': 'sql_server.pyodbc',
'NAME': 'ETP',
'HOST': '10.*.*.*',
'USER': '',
'PASSWORD': '',
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
}
}
}

项目。urls:

from django.urls import path
from django.urls import path from . import views
urlpatterns = [path(r'item/', views.itemnumber, name='index'), ] 
print("hello1")

UPDATION::::::::::::::::::::::::::::


我是Django的新手,无法将用户输入映射到存储过程查询。

views.py

from django.db import connection
from django.shortcuts import render
from .forms import InputForm
def home_view(request):
print("woooooooooooo",request)
context1 ={}
context1['form']= InputForm()
print("context1::::", context1)
return render(request, "input.html", context1)
def itemnumber(request):
cursor = connection.cursor()
try:
itemnumber = "23241715"
C=cursor.execute(f"EXEC ValidateBusinessrule '0000000000{itemnumber}'")
print("c value",C)
result_set = cursor.fetchall()
print(result_set)
result_set1= [' {} '.format(x) for x in result_set]
print(result_set1)
context = {"row": result_set1}
print("lolllllllllll", context)
return render(request, "home.html", context)
finally:
cursor.close()
print("hello3")

forms.py

from django import forms
import re
# creating a form
class InputForm(forms.Form):
print("inside forms")
regex = re.compile('^([1-9]{8})$', re.UNICODE)
ENTER_ITEM_NUMBER= forms.RegexField(max_length=8, regex=regex,help_text=("Required 8 digits 
between {0-9}."))
print("iiiiiiiiiiiiiiiiiiiiiiii",ENTER_ITEM_NUMBER)
#ENTER_ITEM_NUMBER = forms.IntegerField(max_length=8, label='ENTER ITEM NUMBER')

item/urls

from django.urls import path
from django.urls import include, path
#from django.urls import path
from . import views
urlpatterns = [
path('inputs/', views.home_view),
path('item/', views.itemnumber, name='item'),
]
print("hello1")

input.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action = "" method = "post">
{% csrf_token %}
{{form }}
<input type="submit" value=Submit">
</form>
</body>
</html>

Home.html

<html>
<style>
body
{
background-color: powderblue;
}
</style>
<body>
<table style="border: 1px solid #b50b32; margin: 30px auto; width: 100px; padding: 0; border-spacing: 10px;" bgcolor="#00FF00" cellspacing="0" cellpadding="10">
<tr>
<ul>
<th>(u,v)</th>
</ul>
</tr>
<tr>
<ul >
{% for row in row %}
<td style= "text-align: center;">
{{  row }}
</td>
</ul>
</tr>
{% endfor %}
</table>
</body>
</html>

我没有使用任何型号。*

(我可以有一个没有模型的Django表单吗(

我很困惑如何将用户输入=ENTER_ITEM_NUMBER提供给定义项目编号(请求(

这样一切都会好起来吗?

根据给定的代码示例,我假设您的存储过程将字符串作为参数,所以请尝试执行cursor.execute(f"EXEC ValidateBusinessrule '{itemnumber}'")

Upd:要将结果列表传递给html模板,请考虑使用从django.shorcuts导入的render方法。更多信息在这里

最新更新