简体   繁体   English

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM