[英]how to do mapping input page(user) to view.py in django?
I am new to Django.Below is version of Django and used database我是 Django 的新手。下面是 Django 的版本和使用的数据库
Django version: 2.1.15, django-pyodbc-azure==1.11.9.0, used sql-server 2012 Django 版本:2.1.15,django-pyodbc-azure==1.11.9.0,使用 sql-server 2012
django-admin start project item django-admin 启动项目项
Objective : To take input from user @itemnumber & give that input to
EXEC ValidateBusinessrule '@itemnumber'
and show result in html page目标:从用户@itemnumber 获取输入并将该输入提供给
EXEC ValidateBusinessrule '@itemnumber'
并在 html 页面中显示结果setting.py connection
设置.py连接
DATABASES =\
{
'default':
{
'ENGINE': 'sql_server.pyodbc',
'NAME': 'ETP',
'HOST': '10.*.*.*',
'USER': '',
'PASSWORD': '',
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
}
}
}
item.urls:
item.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::::::::::::::::::::::::::::
I am a newbie in Django and not able to map my user-input to my stored procedure query.我是 Django 的新手,无法将我的用户输入映射到我的存储过程查询。
views.py
视图.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
表格.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
输入.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
<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>
I am not using any model.*我没有使用任何模型。*
( Can I have a Django form without Model )
( 我可以有一个没有 Model 的 Django 表单吗)
I got confused How can I give my user input = ENTER_ITEM_NUMBER to the def itemnumber(request) .我很困惑如何将我的用户输入 = ENTER_ITEM_NUMBER 提供给def itemnumber(request) 。
So that all things will work fine?这样一切都会正常进行吗?
Based on given example of code, I assume that your stored procedure takes string as an argument, so try executing cursor.execute(f"EXEC ValidateBusinessrule '{itemnumber}'")
.根据给定的代码示例,我假设您的存储过程将字符串作为参数,因此请尝试执行
cursor.execute(f"EXEC ValidateBusinessrule '{itemnumber}'")
。
Upd: to pass resulting list to html template, consider using render
method imported from django.shorcuts
.更新:要将结果列表传递给 html 模板,请考虑使用从
django.shorcuts
导入的render
方法。 More info on that here更多信息在这里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.