Im currently working on a webApp for a client. I never used URLField cause i always use my own URL validator inside JS, but this time i wanted to use it. The problem is that when i test the app and i pass a url like this:
tests.py
url = "https://www.youtube.com/watch?v=9P1HtbpGSCk"
data = {..., "img": img, "url":url}
response = client_superuser.post(url, data,format="multipart")
This error arraise:
{'error': {'url': [ErrorDetail(string='Please enter a valid URL.', code='invalid')]}, 'status': 422}
I also tried with different URLs but nothing change. Reading on other questions , like this, i realised that testing locally may be a problem, and that's what i'm doing.
url = models.URLField(verify_exists=False)
Or, in other words, ¿how can i turn off the URL validator?, maybe it's stupid having a URLField without validators but i don't understand with Django Docs how to properly disable some validators.
models.py
class Mision(models.Model):
img = models.ImageField(upload_to="misiones", storage=OverwriteStorage(), default="noticias/tanque_arma3.jpg")
usuario = models.ForeignKey(Usuario, related_name="mision", default=None, blank=False, on_delete=models.SET_DEFAULT)
fecha = models.DateTimeField(auto_now_add=True)
titulo = models.CharField(max_length=200, null=False, blank=False)
subtitulo = models.CharField(max_length=200, blank=True)
url = models.URLField(max_length=200, blank=True)
serializers.py
class MisionSerializer(serializers.ModelSerializer):
class Meta:
model = Mision
fields = '__all__'
views.py
@api_view(["POST"])
def misionCreate(request):
serializer = MisionSerializer(data=request.data)
data = {}
if serializer.is_valid():
if request.user.is_superuser:
serializer.save()
mision = Mision.objects.get(id = serializer.data["id"])
data["success"] = "Mision Creada con exito!"
data["status"] = 200
data["mision"] = serializer.data
return Response(data, status=status.HTTP_200_OK)
elif not request.user.is_superuser:
data["error"] = "El usuario no es superuser."
data["status"] = 401
return Response(data, status=status.HTTP_401_UNAUTHORIZED)
else:
data["error"] = "El usuario no tiene tokens."
data["status"] = 401
return Response(data, status=status.HTTP_401_UNAUTHORIZED)
else:
data["error"] = serializer.errors
data["status"] = 422
return Response(data, status=status.HTTP_422_UNPROCESSABLE_ENTITY)