Mar-11-2019, 02:55 AM
I’m trying to run a basic Django app which redacts a 16 digit number entered by the user. I had a it running a few minutes ago. I’m not sure what I changed, but now I am getting a MultiValueDictKeyError. I’ve triple checked every variable. The only dictionary in my project is in views.py at line 7. As far as I can tell, it’s all accurate and positioned correctly. I don’t recall changing this dictionary or any other operator around this line. I’m stumped. What would you people suggest? Have a look at my setup.
Here is the error and traceback in full: https://pastebin.com/QwSrmAJx
urls.py:
In my home.html template, even though the instructor instructor in my Udemy course doesn’t use it, I added a method="get" attribute to my HTML form tag. This didn’t change anything.
I also looked up “Django request.GET”. Based on that SO answer, In my views.py I changed the line (where I declare the number variable) from
This is a long shot, but I thought I would share a link to my source code hosted on GitHub with a requirements.txt included. If any of you would like to test this out yourself, I am accepting pull requests. Here it is: https://github.com/Angeles4four/CC_Redact
Here is the error and traceback in full: https://pastebin.com/QwSrmAJx
urls.py:
from django.conf.urls import include, url from django.contrib import admin from django.urls import path from . import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^$', views.home, name='home'), ]views.py:
from django.http import HttpResponse from django.shortcuts import render def home(request): number = request.GET['ccEntry'] redacted_num = 'xxxx xxxx xxxx {}'.format(number[-4:]) return render(request, 'home.html', {'number':number, 'redacted_num':redacted_num})Template (home.html):
<html> <head> <title> CC Redact </title> </head> <body> <center> <form action="{% url 'home' %}" method="get"> <div> <h3>Enter your fake Chuckee Cheese Neptune credit card number!</h3> <input type="number" id="number" name="ccEntry" required placeholder=" " pattern=".{16,16}"/> <div class="requirements"> Must be a 16 digit number. </div> <input type="submit" value="Redact!!!"/> </div> </form> <h3>Original Card Number:</h3> {{ number }} <h3>Redacted Card Number:</h3> {{ redacted_num }} <h3> Did this work?</h3> </center> </body> </html>Here is the error, traceback and Request information:
MultiValueDictKeyError at / 'ccEntry' Request Method: GET Request URL: http://127.0.0.1:8000/ Django Version: 2.0.2 Exception Type: MultiValueDictKeyError Exception Value: 'ccEntry' Exception Location: /home/<user>/.local/lib/python3.7/site-packages/django/utils/datastructures.py in __getitem__, line 79 Python Executable: /usr/sbin/python Python Version: 3.7.2 Python Path: ['/home/<user>/dev/projects/python/2018-and-2019/cel2fah-original_with_CC-redact-project-_Django202/first_project_attempt', '/usr/lib/python37.zip', '/usr/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/home/<user>/.local/lib/python3.7/site-packages', '/usr/lib/python3.7/site-packages', '/usr/lib/python3.7/site-packages/setuptools-40.6.2-py3.7.egg'] Server time: Thu, 7 Mar 2019 17:39:40 +0000 Environment: Request Method: GET Request URL: http://127.0.0.1:8000/ Django Version: 2.0.2 Python Version: 3.7.2 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware'] Traceback: File "/home/<user>/.local/lib/python3.7/site-packages/django/utils/datastructures.py" in __getitem__ 77. list_ = super().__getitem__(key) During handling of the above exception ('ccEntry'), another exception occurred: File "/home/<user>/.local/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner 35. response = get_response(request) File "/home/<user>/.local/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response 128. response = self.process_exception_by_middleware(e, request) File "/home/<user>/.local/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response 126. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/<user>/dev/projects/python/2018-and-2019/cel2fah-original_with_CC-redact-project-_Django202/first_project_attempt/first_project_attempt/views.py" in home 5. number = request.GET['ccEntry'] File "/home/<user>/.local/lib/python3.7/site-packages/django/utils/datastructures.py" in __getitem__ 79. raise MultiValueDictKeyError(key) Exception Type: MultiValueDictKeyError at / Exception Value: 'ccEntry' Request information USER AnonymousUser GET No GET data POST No POST data FILES No FILES dataI’ve double checked to make sure that I include my data in my form element as you can see in the above template. The data is present as “ccEntry” in both home.html and in views.py.
In my home.html template, even though the instructor instructor in my Udemy course doesn’t use it, I added a method="get" attribute to my HTML form tag. This didn’t change anything.
I also looked up “Django request.GET”. Based on that SO answer, In my views.py I changed the line (where I declare the number variable) from
number = request.GET['ccEntry']
to number = request.GET.get['ccEntry', None]
. That gives a different error (a type error this time): https://pastebin.com/L81LVtziThis is a long shot, but I thought I would share a link to my source code hosted on GitHub with a requirements.txt included. If any of you would like to test this out yourself, I am accepting pull requests. Here it is: https://github.com/Angeles4four/CC_Redact