目标:
**要将views.py
中的输入值 itemnumbervalue 传递给 itemnumber()>发生错误:
方法对象不是view.py中的第17行可订阅的
已经应用技术来纠正问题:
情况1:尝试使用 [] 和()两种括号
if (request.POST.get['submitted']):
c = request.POST['ENTER_ITEM_NUMBER']
我尝试了许多选项,例如“删除获取” ,并尝试了 braces()和[]
views.py:
从.forms导入InputForm
def home_view(request):
context1 ={}
context1['form'] = InputForm(request.POST)
return render(request, "input.html", context1)
def itemnumber(request):
if (request.POST.get['submitted']):
c = request.POST['ENTER_ITEM_NUMBER']
print("input valuegiven by user",c)*
cursor = connection.cursor()
try:
itemnumbervalue = c
C=cursor.execute(f"EXEC ValidateBusinessrule '0000000000{itemnumbervalue}'")
result_set = cursor.fetchall()
result_set1= [' {} '.format(x) for x in result_set]
context = {"row": result_set1}
return render(request, "home.html", context)
finally:
cursor.close()
forms.py
class InputForm(forms.Form):
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}."))
home.html
<body>
<table>
<tr>
<ul>
<th>(column 1,column 2)</th>
</ul>
<tr>
<ul >
{% for row in row %}
<td style= "text-align: center;">
{{ row }}
</td>
</ul>
</tr>
{% endfor %}
</tr>
</table>
</body>
input.html
<body>
<form action = "{% url 'item'%}" method = "POST">
{% csrf_token %}
{{form}}
<input type="submit" value=Submit" name="submitted">
</form>
</body>
问题详细信息:
要从用户那里获取输入并将其输入到view.py中itemnumber()中的 itemnumbervalue 中。我已经通过放置itemnumbervalue ='12345678'(没有来自用户的输入值)进行验证,并获得了结果表。
答案 0 :(得分:0)
尝试使用request.POST.get('submitted')
或request.POST['submitted']
。
不同之处在于,如果在字典中找不到键,.get
方法将返回None
,但是如果没有找到键,则直接索引键,它将抛出KeyError
异常
要查看正在请求的值。POST可以打印出来。
还在print("input valuegiven by user",c)*
中删除语法无效的结尾的*。
P.S。我尝试重现此问题,并通过上述指定方法成功解决了该问题。