在执行代码时出现以下错误:-
/ p /“文本框”中的MultiValueDictKeyError请求方法:GET 请求网址:http://127.0.0.1:8000/count/ Django版本:2.1 异常类型:MultiValueDictKeyError异常值:'textbox' 例外 位置:/Users/rajans/anaconda3/lib/python3.7/site-packages/django/utils/datastructures.py 在 getitem 中,第79行Python 可执行文件:/ Users / rajans / anaconda3 / bin / python Python版本:3.7.0 Python路径:['/ Users / rajans / Documents / djangoprojects / wordcount', '/Users/rajans/anaconda3/lib/python37.zip', '/Users/rajans/anaconda3/lib/python3.7', '/Users/rajans/anaconda3/lib/python3.7/lib-dynload', '/Users/rajans/anaconda3/lib/python3.7/site-packages', '/Users/rajans/anaconda3/lib/python3.7/site-packages/aeosa']服务器 时间:2019年2月5日,星期二06:39:06 +0000
Python
from django.http import HttpResponse
from django.shortcuts import render
def homepage(request):
return render(request,'home.html')
def contact(request):
return HttpResponse("<h2> This is a contact_us page</h2><br> You can write to rajan.sharma@freshworks.com for any query")
def count(request):
data=request.GET['textbox']
data_list=split(data)
data_len=len(data_list)
return render(request,'count.html',{'length':data_len})
--------
<h1>Word Count</h1><br>
This is the home page for the Word count.
<form action="{% url 'count' name%}"> <!-- "{% url 'count' %}". this will load the url even if the path is changed..it will look for the name count-->
<textarea name="textbox" cols=40 rows="10"></textarea><br/>
<input type="submit" value="count"/>
</form>
count.html
<h1>Counted</h1><br/>
The length is :- {{length}}
答案 0 :(得分:1)
您好像没有将教科书变量作为参数传递给URL。
尝试将您的URL称为/ count_url /?textbook =“您要传递的值”
此外,建议使用.get方法作为
data = request.GET.get('textbook', None)
if data:
# do something
答案 1 :(得分:0)
使用MultiValueDict的get方法,如果textbox
不存在,您还可以提供默认值。
data=request.GET.get('textbox', None)
if data:
#process
else:
#process
答案 2 :(得分:0)
您正在使用http://127.0.0.1:8000/count/这个URL时,此函数的url调用将与您尝试访问“文本框”的函数中的GET方法一起使用,但是在第一次访问textbox参数时不存在,因此显示错误
您需要修改视图功能并编写一个条件
def count(request):
data=request.GET.get('textbox', None)
if data:
data_list=split(data)
data_len=len(data_list)
return render(request,'count.html',{'length':data_len})
else:
return render(request,'add here your html page name where input form is there')
答案 3 :(得分:0)
您在这里有两个问题,首先,您必须处理以下事实:(如其他答案所述)您可能会在没有textbox
键的情况下到达此视图。
您可以按照其他答案中所示进行修复:
GET
但是我最担心的是表单的data=request.GET.get('textbox', None)
属性:
action
这样,您是说您的<form action="{% url 'count' name%}">
视图收到另一个参数,但这不是我们在视图实现中看到的:
count
因此,您应该将视图更改为:
def count(request):
...
您的网址还应该指定您的视图可以接收另一个参数:
def count(request, name):
data=request.GET.get('textbox', None)
data_len = 0
if data:
data_list=split(data)
data_len=len(data_list)
return render(request,'count.html',{'length':data_len})