Django-Tutorials
Django-Tutorials copied to clipboard
¿Como puedo solucionar: Exception Value: The view blog.views.compartir_comentario didn't return an HttpResponse object. It returned None instead.?
Tengo el siguiente error:
Environment:
Request Method: GET Request URL: http://127.0.0.1:8000/blog/7/compartir/
Django Version: 3.2.9 Python Version: 3.10.0 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog.apps.BlogConfig'] 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 (most recent call last): File "C:\Users\wilde\OneDrive\Desktop\DD - WEB\PythonProjects\env01\lib\site-packages\django\core\handlers\exception.py", line 47, in inner response = get_response(request) File "C:\Users\wilde\OneDrive\Desktop\DD - WEB\PythonProjects\env01\lib\site-packages\django\core\handlers\base.py", line 188, in _get_response self.check_response(response, callback) File "C:\Users\wilde\OneDrive\Desktop\DD - WEB\PythonProjects\env01\lib\site-packages\django\core\handlers\base.py", line 309, in check_response raise ValueError(
Exception Type: ValueError at /blog/7/compartir/ Exception Value: The view blog.views.compartir_comentario didn't return an HttpResponse object. It returned None instead.
Mis códigos:
forms.py:
from django import forms
class FormularioEmailAnuncios(forms.Form):
nombre = forms.CharField(max_length=25)
email = forms.EmailField()
para = forms.EmailField()
comentarios = forms.CharField(required=False,
widget= forms.Textarea)
Compartir.html:
{% extends "../base.html" %}
{% block titulo %} Compartir un comentario {% endblock %}
{% block content %}
{% if enviado %}
<h1>El e-mail se ha enviado correctamente</h1>
<p>
"{{ comentario.titulo }}" fue enviado correctamente a {{ formulario.cleaned_data.para }}
</p>
{% else %}
<h1>Compartir "{{ comentario.titulo }}" por email </h1>
<form method='post'>
{{ formulario.as_p }}
{% csrf_token %} <!--Para prevenir ataques cross-site-->
<input type='submit' value='Enviar e-mail'>
</form>
{% endif %}
{% endblock %}
View compartir_comentario:
def compartir_comentario(request, comentario_id):
comentario = get_object_or_404(Anuncio, id=comentario_id, estado='publicado')
enviado = False
if request.method == 'POST':
formulario = FormularioEmailAnuncios(request.POST)
if formulario.is_valid():
datos = formulario.cleaned_data
comentario_url = request.build_absolute_uri(comentario.get_absolute_url())
asunto = f"{datos['nombre']} te recomienda que leas {comentario.titulo}"
mensaje = f"Leer {comentario.titulo} en {comentario_url} \n\n los comentarios de {datos['nombre']} : {datos['comentarios']} "
send_mail(asunto, mensaje, '[email protected]', [datos ['para']])
enviado = True
else:
formulario = FormularioEmailAnuncios() #es un GET que muestra el formulario limpio
return render(request,
'blog/post/compartir.html',
{'comentario': comentario,
'formulario':formulario,
'enviado':enviado})
Al intentar compartir un comentario, así:
[![Ejemplo compartir comentario via Email][1]][1] [1]: https://i.stack.imgur.com/mGem0.png
