diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 41912a2ff5..383967d4ca 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,11 +1,11 @@
 repos:
   - repo: https://github.com/asottile/pyupgrade
-    rev: v3.15.0
+    rev: v3.15.1
     hooks:
     -   id: pyupgrade
         args: [--py39-plus]
   - repo: https://github.com/psf/black-pre-commit-mirror
-    rev: 23.12.1 # needs to be also updated in requirements-dev.txt
+    rev: 24.2.0 # needs to be also updated in requirements-dev.txt
     hooks:
       - id: black
         language_version: python3
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 35bb0a488e..7f8bc21fd4 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -1,12 +1,12 @@
 -r requirements.txt
 
-black==23.12.1  # needs to be also updated in .pre-commit-config.yaml
-colorlog==6.8.0
-django-debug-toolbar==4.2.0
+black==24.2.0  # needs to be also updated in .pre-commit-config.yaml
+colorlog==6.8.2
+django-debug-toolbar==4.3.0
 django-extensions==3.2.3
-Faker==22.2.0
-pre-commit==3.6.0
+Faker==24.1.0
+pre-commit==3.6.2
 PyYAML==6.0.1
-selenium==4.16.0
+selenium==4.18.1
 Sphinx==7.2.6
 sphinx-rtd-theme==2.0.0
diff --git a/requirements-prod.txt b/requirements-prod.txt
index d2edeee09a..ab46a8bdbc 100644
--- a/requirements-prod.txt
+++ b/requirements-prod.txt
@@ -1,6 +1,6 @@
 -r requirements.txt
 
 gunicorn==21.2.0
-mysqlclient==2.2.1
-sentry-sdk==1.39.2
+mysqlclient==2.2.4
+sentry-sdk==1.41.0
 ujson==5.9.0
diff --git a/requirements.txt b/requirements.txt
index 0cc009dbd2..d02622adfb 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -5,15 +5,15 @@ elasticsearch==5.5.3
 social-auth-app-django==5.4.0
 
 # Explicit dependencies (references in code)
-beautifulsoup4==4.12.2
-django-crispy-forms==2.0
-django-model-utils==4.3.1
+beautifulsoup4==4.12.3
+django-crispy-forms==2.1
+django-model-utils==4.4.0
 django-recaptcha==4.0.0
-Django==4.2.6
+Django==4.2.11
 easy-thumbnails[svg]==2.8.5
 factory-boy==3.3.0
 geoip2==4.8.0
-GitPython==3.1.41
+GitPython==3.1.42
 homoglyphs==2.0.4
 lxml==5.1.0
 Pillow==10.2.0
@@ -22,7 +22,7 @@ requests==2.31.0
 
 # Api dependencies
 django-cors-headers==4.3.1
-django-filter==23.5
+django-filter==24.1
 django-oauth-toolkit==2.3.0
 djangorestframework==3.14.0
 drf-extensions==0.7.1
@@ -31,7 +31,7 @@ drf-yasg==1.21.7
 
 # Dependencies for slug generation, please be extra careful with those
 django-uuslug==2.0.0
-python-slugify==8.0.1
+python-slugify==8.0.4
 
 # tomllib was added to the standard library in Python 3.11
 # tomli is only needed for older Python versions
diff --git a/zds/gallery/forms.py b/zds/gallery/forms.py
index bb3e640726..fe8eb1a939 100644
--- a/zds/gallery/forms.py
+++ b/zds/gallery/forms.py
@@ -219,7 +219,6 @@ def clean(self):
 
 
 class ImageAsAvatarForm(forms.Form):
-
     """Form to add current image as avatar"""
 
     def __init__(self, *args, **kwargs):
diff --git a/zds/mp/models.py b/zds/mp/models.py
index 1bdcd7bbae..00abd5448f 100644
--- a/zds/mp/models.py
+++ b/zds/mp/models.py
@@ -486,7 +486,6 @@ def has_object_update_permission(self, request):
 
 
 class PrivatePostVote(models.Model):
-
     """Set of Private Post votes."""
 
     class Meta:
diff --git a/zds/pages/admin.py b/zds/pages/admin.py
index aa668fd8bf..aa0657d09c 100644
--- a/zds/pages/admin.py
+++ b/zds/pages/admin.py
@@ -4,7 +4,6 @@
 
 
 class GroupContactAdmin(admin.ModelAdmin):
-
     """Representation of GroupContact model in the admin interface."""
 
     raw_id_fields = ("persons_in_charge",)
diff --git a/zds/tutorialv2/mixins.py b/zds/tutorialv2/mixins.py
index f0ec336c24..2d1b80a6bb 100644
--- a/zds/tutorialv2/mixins.py
+++ b/zds/tutorialv2/mixins.py
@@ -295,7 +295,6 @@ def __init__(self, url, *args, **kwargs):
 
 
 class SingleOnlineContentViewMixin(ContentTypeMixin):
-
     """
     Base mixin to get only one content online content
 
diff --git a/zds/tutorialv2/models/help_requests.py b/zds/tutorialv2/models/help_requests.py
index 1332d0600b..676593c0ff 100644
--- a/zds/tutorialv2/models/help_requests.py
+++ b/zds/tutorialv2/models/help_requests.py
@@ -6,7 +6,6 @@
 
 
 class HelpWriting(models.Model):
-
     """Tutorial Help"""
 
     class Meta:
diff --git a/zds/utils/models.py b/zds/utils/models.py
index c2a9d2fef9..088a42cf29 100644
--- a/zds/utils/models.py
+++ b/zds/utils/models.py
@@ -112,7 +112,6 @@ def get_parent_category(self):
 
 
 class CategorySubCategory(models.Model):
-
     """ManyToMany between Category and SubCategory but save a boolean to know
     if category is his main category."""
 
@@ -133,7 +132,6 @@ def __str__(self):
 
 
 class Licence(models.Model):
-
     """Publication licence."""
 
     class Meta:
@@ -368,7 +366,6 @@ def get_hat_to_add(hat_name, user):
 
 
 class Comment(models.Model):
-
     """Comment in forum, articles, tutorial, chapter, etc."""
 
     class Meta:
@@ -741,7 +738,6 @@ class Meta:
 
 
 class CommentVote(models.Model):
-
     """Set of comment votes."""
 
     class Meta:
@@ -758,7 +754,6 @@ def __str__(self):
 
 
 class Tag(models.Model):
-
     """Set of tags."""
 
     class Meta: