admin管理员组文章数量:1024592
I'm getting this error when I attempt to submit the form. I'm not exactly sure what doesn't have a value/isn't defined, and was looking for guidance as the traceback didn't offer much insight for me at least. I had this error before when I attempted to run the page for the first time, and it was resolved by putting form=form into render_template's parameter. I believe the issue is in views.py, but let me know if I'm missing code or anything else. Thanks
views.py
@blueprint.route("register/")
def register_page():
"""Renders register site landing page."""
form = RegisterForm()
return render_template('main/register.html', page_title="Register", form=form, media_types=current_app.config["ACCEPTED_"
"MEDIA_TYPE"])
@blueprint.route("register/", methods=['GET', 'POST'])
def register():
"""Renders register page."""
form = RegisterForm()
if request.method == 'POST':
if not form.validate_on_submit():
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False)
# If pany does not exist, create it
if err:
pany, err = create_pany(formanization.data)
if err:
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False, message=err)
if err:
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False, message=err)
if err:
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False, message=err)
else:
success_msg = "Your ticket id is {}. You should receive an email with a link to your ticket."
.format(ticket.get('id'))
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=True, message=success_msg)
return render_template('main/register.html', page_title="Service Registration",
form=form)
javascript
var validateContentType = function() {
var contentType = $('#upload').prop('files')[0].type;
console.log(contentType, contentType2, contentType3, contentType4, contentType5, contentType6, contentType7);
var contentTypes = contentType.split('/');
var MIMEType = contentTypes[0];
var mediaType = contentTypes[1];
switch(MIMEType) {
case 'video':
return true;
case 'image':
return true;
case 'application':
if ({{ media_types|tojson }}.indexOf(mediaType) != -1) {
return true;
} else {
return false;
}
default:
return false;
}
};
traceback
Traceback (most recent call last):
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1997, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\_pat.py", line 33, in reraise
raise value
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\_pat.py", line 33, in reraise
raise value
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\main\views.py", line 151, in register
form=form, form_success=False)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\templating.py", line 134, in render_template
context, ctx.app)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\templating.py", line 116, in _render
rv = template.render(context)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\asyncsupport.py", line 76, in render
return original_render(self, *args, **kwargs)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\environment.py", line 1008, in render
return self.environment.handle_exception(exc_info, True)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\_pat.py", line 37, in reraise
raise value.with_traceback(tb)
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\main\register.html", line 2, in top-level template code
{% from 'content/helpers.html' import render_field %}
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\layout.html", line 36, in top-level template code
{% block body %}
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\layout.html", line 81, in block "body"
{% block js %}
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\main\register.html", line 848, in block "js"
if ({{ media_types|tojson }}.indexOf(mediaType) != -1) {
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 269, in tojson_filter
return Markup(htmlsafe_dumps(obj, **kwargs))
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 183, in htmlsafe_dumps
rv = dumps(obj, **kwargs) \
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 123, in dumps
rv = _json.dumps(obj, **kwargs)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\__init__.py", line 238, in dumps
**kw).encode(obj)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 80, in default
return _json.JSONEncoder.default(self, o)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\encoder.py", line 180, in default
o.__class__.__name__)
TypeError: Object of type 'Undefined' is not JSON serializable
I'm getting this error when I attempt to submit the form. I'm not exactly sure what doesn't have a value/isn't defined, and was looking for guidance as the traceback didn't offer much insight for me at least. I had this error before when I attempted to run the page for the first time, and it was resolved by putting form=form into render_template's parameter. I believe the issue is in views.py, but let me know if I'm missing code or anything else. Thanks
views.py
@blueprint.route("register/")
def register_page():
"""Renders register site landing page."""
form = RegisterForm()
return render_template('main/register.html', page_title="Register", form=form, media_types=current_app.config["ACCEPTED_"
"MEDIA_TYPE"])
@blueprint.route("register/", methods=['GET', 'POST'])
def register():
"""Renders register page."""
form = RegisterForm()
if request.method == 'POST':
if not form.validate_on_submit():
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False)
# If pany does not exist, create it
if err:
pany, err = create_pany(formanization.data)
if err:
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False, message=err)
if err:
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False, message=err)
if err:
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False, message=err)
else:
success_msg = "Your ticket id is {}. You should receive an email with a link to your ticket."
.format(ticket.get('id'))
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=True, message=success_msg)
return render_template('main/register.html', page_title="Service Registration",
form=form)
javascript
var validateContentType = function() {
var contentType = $('#upload').prop('files')[0].type;
console.log(contentType, contentType2, contentType3, contentType4, contentType5, contentType6, contentType7);
var contentTypes = contentType.split('/');
var MIMEType = contentTypes[0];
var mediaType = contentTypes[1];
switch(MIMEType) {
case 'video':
return true;
case 'image':
return true;
case 'application':
if ({{ media_types|tojson }}.indexOf(mediaType) != -1) {
return true;
} else {
return false;
}
default:
return false;
}
};
traceback
Traceback (most recent call last):
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1997, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\_pat.py", line 33, in reraise
raise value
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\_pat.py", line 33, in reraise
raise value
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\main\views.py", line 151, in register
form=form, form_success=False)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\templating.py", line 134, in render_template
context, ctx.app)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\templating.py", line 116, in _render
rv = template.render(context)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\asyncsupport.py", line 76, in render
return original_render(self, *args, **kwargs)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\environment.py", line 1008, in render
return self.environment.handle_exception(exc_info, True)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\_pat.py", line 37, in reraise
raise value.with_traceback(tb)
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\main\register.html", line 2, in top-level template code
{% from 'content/helpers.html' import render_field %}
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\layout.html", line 36, in top-level template code
{% block body %}
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\layout.html", line 81, in block "body"
{% block js %}
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\main\register.html", line 848, in block "js"
if ({{ media_types|tojson }}.indexOf(mediaType) != -1) {
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 269, in tojson_filter
return Markup(htmlsafe_dumps(obj, **kwargs))
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 183, in htmlsafe_dumps
rv = dumps(obj, **kwargs) \
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 123, in dumps
rv = _json.dumps(obj, **kwargs)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\__init__.py", line 238, in dumps
**kw).encode(obj)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 80, in default
return _json.JSONEncoder.default(self, o)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\encoder.py", line 180, in default
o.__class__.__name__)
TypeError: Object of type 'Undefined' is not JSON serializable
Share
Improve this question
edited Jun 20, 2018 at 14:32
Steven Nguyen
asked Jun 20, 2018 at 13:57
Steven NguyenSteven Nguyen
811 gold badge3 silver badges11 bronze badges
3
- 2 Please reduce this to the minimal needed to reproduce the issue, and include the full traceback of the error. – Martijn Pieters Commented Jun 20, 2018 at 14:15
- I believe I have reduced it to the minimum amount of code. Let me know if this suffices. – Steven Nguyen Commented Jun 20, 2018 at 14:34
- I wonder if the error occur if you’d uploaded a file as opposed to default switch case where there is no file.. – boateng Commented Jun 20, 2018 at 15:05
1 Answer
Reset to default 1You didn't pass in media_types
into any of your render_template()
calls in the register
route. For the specific traceback you gave, the culprit is here:
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False)
but his also applies to the other render_template()
calls. You can see this in the traceback:
Traceback (most recent call last):
# [...]
# line pointing to the register() function, where the above render_template()
# call is made
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\main\views.py", line 151, in register
form=form, form_success=False)
# [...]
# which leads to this template line, where media_types|tojson is output
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\main\register.html", line 848, in block "js"
if ({{ media_types|tojson }}.indexOf(mediaType) != -1) {
# The next line is tojson filter being called
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 269, in tojson_filter
return Markup(htmlsafe_dumps(obj, **kwargs))
# [...]
# and the exception tells us something is not serializable, the Undefined object.
TypeError: Object of type 'Undefined' is not JSON serializable
Jinja2 uses Undefined
for any variable that has not been set for the template. From the template documentation:
If a variable or attribute does not exist, you will get back an undefined value. What you can do with that kind of value depends on the application configuration: the default behavior is to evaluate to an empty string if printed or iterated over, and to fail for every other operation.
You need to either pass in a value for media_types
to all calls, or set a default if the value is missing, like an empty string:
if ({{ media_types|default("")|tojson }}.indexOf(mediaType) != -1) {
I'm getting this error when I attempt to submit the form. I'm not exactly sure what doesn't have a value/isn't defined, and was looking for guidance as the traceback didn't offer much insight for me at least. I had this error before when I attempted to run the page for the first time, and it was resolved by putting form=form into render_template's parameter. I believe the issue is in views.py, but let me know if I'm missing code or anything else. Thanks
views.py
@blueprint.route("register/")
def register_page():
"""Renders register site landing page."""
form = RegisterForm()
return render_template('main/register.html', page_title="Register", form=form, media_types=current_app.config["ACCEPTED_"
"MEDIA_TYPE"])
@blueprint.route("register/", methods=['GET', 'POST'])
def register():
"""Renders register page."""
form = RegisterForm()
if request.method == 'POST':
if not form.validate_on_submit():
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False)
# If pany does not exist, create it
if err:
pany, err = create_pany(formanization.data)
if err:
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False, message=err)
if err:
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False, message=err)
if err:
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False, message=err)
else:
success_msg = "Your ticket id is {}. You should receive an email with a link to your ticket."
.format(ticket.get('id'))
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=True, message=success_msg)
return render_template('main/register.html', page_title="Service Registration",
form=form)
javascript
var validateContentType = function() {
var contentType = $('#upload').prop('files')[0].type;
console.log(contentType, contentType2, contentType3, contentType4, contentType5, contentType6, contentType7);
var contentTypes = contentType.split('/');
var MIMEType = contentTypes[0];
var mediaType = contentTypes[1];
switch(MIMEType) {
case 'video':
return true;
case 'image':
return true;
case 'application':
if ({{ media_types|tojson }}.indexOf(mediaType) != -1) {
return true;
} else {
return false;
}
default:
return false;
}
};
traceback
Traceback (most recent call last):
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1997, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\_pat.py", line 33, in reraise
raise value
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\_pat.py", line 33, in reraise
raise value
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\main\views.py", line 151, in register
form=form, form_success=False)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\templating.py", line 134, in render_template
context, ctx.app)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\templating.py", line 116, in _render
rv = template.render(context)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\asyncsupport.py", line 76, in render
return original_render(self, *args, **kwargs)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\environment.py", line 1008, in render
return self.environment.handle_exception(exc_info, True)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\_pat.py", line 37, in reraise
raise value.with_traceback(tb)
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\main\register.html", line 2, in top-level template code
{% from 'content/helpers.html' import render_field %}
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\layout.html", line 36, in top-level template code
{% block body %}
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\layout.html", line 81, in block "body"
{% block js %}
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\main\register.html", line 848, in block "js"
if ({{ media_types|tojson }}.indexOf(mediaType) != -1) {
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 269, in tojson_filter
return Markup(htmlsafe_dumps(obj, **kwargs))
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 183, in htmlsafe_dumps
rv = dumps(obj, **kwargs) \
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 123, in dumps
rv = _json.dumps(obj, **kwargs)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\__init__.py", line 238, in dumps
**kw).encode(obj)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 80, in default
return _json.JSONEncoder.default(self, o)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\encoder.py", line 180, in default
o.__class__.__name__)
TypeError: Object of type 'Undefined' is not JSON serializable
I'm getting this error when I attempt to submit the form. I'm not exactly sure what doesn't have a value/isn't defined, and was looking for guidance as the traceback didn't offer much insight for me at least. I had this error before when I attempted to run the page for the first time, and it was resolved by putting form=form into render_template's parameter. I believe the issue is in views.py, but let me know if I'm missing code or anything else. Thanks
views.py
@blueprint.route("register/")
def register_page():
"""Renders register site landing page."""
form = RegisterForm()
return render_template('main/register.html', page_title="Register", form=form, media_types=current_app.config["ACCEPTED_"
"MEDIA_TYPE"])
@blueprint.route("register/", methods=['GET', 'POST'])
def register():
"""Renders register page."""
form = RegisterForm()
if request.method == 'POST':
if not form.validate_on_submit():
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False)
# If pany does not exist, create it
if err:
pany, err = create_pany(formanization.data)
if err:
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False, message=err)
if err:
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False, message=err)
if err:
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False, message=err)
else:
success_msg = "Your ticket id is {}. You should receive an email with a link to your ticket."
.format(ticket.get('id'))
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=True, message=success_msg)
return render_template('main/register.html', page_title="Service Registration",
form=form)
javascript
var validateContentType = function() {
var contentType = $('#upload').prop('files')[0].type;
console.log(contentType, contentType2, contentType3, contentType4, contentType5, contentType6, contentType7);
var contentTypes = contentType.split('/');
var MIMEType = contentTypes[0];
var mediaType = contentTypes[1];
switch(MIMEType) {
case 'video':
return true;
case 'image':
return true;
case 'application':
if ({{ media_types|tojson }}.indexOf(mediaType) != -1) {
return true;
} else {
return false;
}
default:
return false;
}
};
traceback
Traceback (most recent call last):
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1997, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\_pat.py", line 33, in reraise
raise value
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\_pat.py", line 33, in reraise
raise value
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\main\views.py", line 151, in register
form=form, form_success=False)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\templating.py", line 134, in render_template
context, ctx.app)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\templating.py", line 116, in _render
rv = template.render(context)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\asyncsupport.py", line 76, in render
return original_render(self, *args, **kwargs)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\environment.py", line 1008, in render
return self.environment.handle_exception(exc_info, True)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\jinja2\_pat.py", line 37, in reraise
raise value.with_traceback(tb)
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\main\register.html", line 2, in top-level template code
{% from 'content/helpers.html' import render_field %}
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\layout.html", line 36, in top-level template code
{% block body %}
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\layout.html", line 81, in block "body"
{% block js %}
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\main\register.html", line 848, in block "js"
if ({{ media_types|tojson }}.indexOf(mediaType) != -1) {
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 269, in tojson_filter
return Markup(htmlsafe_dumps(obj, **kwargs))
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 183, in htmlsafe_dumps
rv = dumps(obj, **kwargs) \
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 123, in dumps
rv = _json.dumps(obj, **kwargs)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\__init__.py", line 238, in dumps
**kw).encode(obj)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 80, in default
return _json.JSONEncoder.default(self, o)
File "C:\Users\snguyen\AppData\Local\Programs\Python\Python36-32\lib\json\encoder.py", line 180, in default
o.__class__.__name__)
TypeError: Object of type 'Undefined' is not JSON serializable
Share
Improve this question
edited Jun 20, 2018 at 14:32
Steven Nguyen
asked Jun 20, 2018 at 13:57
Steven NguyenSteven Nguyen
811 gold badge3 silver badges11 bronze badges
3
- 2 Please reduce this to the minimal needed to reproduce the issue, and include the full traceback of the error. – Martijn Pieters Commented Jun 20, 2018 at 14:15
- I believe I have reduced it to the minimum amount of code. Let me know if this suffices. – Steven Nguyen Commented Jun 20, 2018 at 14:34
- I wonder if the error occur if you’d uploaded a file as opposed to default switch case where there is no file.. – boateng Commented Jun 20, 2018 at 15:05
1 Answer
Reset to default 1You didn't pass in media_types
into any of your render_template()
calls in the register
route. For the specific traceback you gave, the culprit is here:
return render_template('main/register.html', page_title="Service Registration",
form=form, form_success=False)
but his also applies to the other render_template()
calls. You can see this in the traceback:
Traceback (most recent call last):
# [...]
# line pointing to the register() function, where the above render_template()
# call is made
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\main\views.py", line 151, in register
form=form, form_success=False)
# [...]
# which leads to this template line, where media_types|tojson is output
File "C:\Users\snguyen\Documents\Nevco_Support\nevco-support\nevco_support\templates\main\register.html", line 848, in block "js"
if ({{ media_types|tojson }}.indexOf(mediaType) != -1) {
# The next line is tojson filter being called
File "C:\Users\snguyen\Documents\Nevco_Support\venv\lib\site-packages\flask\json.py", line 269, in tojson_filter
return Markup(htmlsafe_dumps(obj, **kwargs))
# [...]
# and the exception tells us something is not serializable, the Undefined object.
TypeError: Object of type 'Undefined' is not JSON serializable
Jinja2 uses Undefined
for any variable that has not been set for the template. From the template documentation:
If a variable or attribute does not exist, you will get back an undefined value. What you can do with that kind of value depends on the application configuration: the default behavior is to evaluate to an empty string if printed or iterated over, and to fail for every other operation.
You need to either pass in a value for media_types
to all calls, or set a default if the value is missing, like an empty string:
if ({{ media_types|default("")|tojson }}.indexOf(mediaType) != -1) {
本文标签: javascriptTypeError Object of type 39Undefined39 is not JSON serializableStack Overflow
版权声明:本文标题:javascript - TypeError: Object of type 'Undefined' is not JSON serializable - Stack Overflow 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/questions/1745609070a2158897.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论