Help me een aangepaste signaalhandler implementeren in mijn Django-toepassing om complexe workflows te beheren.
description
Door deze prompt te gebruiken, stroomlijn je het workflowbeheer van je toepassing, verbeter je de organisatie van de code en zorg je ervoor dat specifieke acties automatisch worden geactiveerd als reactie op belangrijke gebeurtenissen, wat de algehele efficiëntie van de toepassing verbetert.
prompt
try_prompt
Beschrijf mijn huidige Django-projectopzet: {{huidige_projectopzet}}. Voor welke specifieke gebeurtenissen ... more
generate_helper
...
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Je huidige Django-project gebruikt Django 3.2 en beschikt over een aangepast gebruikersmodel. Je wilt specifieke gebeurtenissen detecteren en daarop aangepaste acties uitvoeren.
De gebeurtenis die je noemt, is het versturen van een verificatie-e-mail na het aanmaken of wijzigen van een gebruiker. Dit kun je bereiken door een signaal te gebruiken dat wordt getriggerd na het opslaan van een gebruiker.
Specifiek wil je de actie uitvoeren bij het signaal `post_save` voor het `User`-model (of je aangepaste versie daarvan). Wanneer een nieuwe gebruiker wordt aangemaakt of een bestaande gebruiker wordt bijgewerkt, wordt dan automatisch een verificatie-e-mail gestuurd.
De implementatie zou er ongeveer zo uitzien:
```python
from django.db.models.signals import post_save
from django.dispatch import receiver
from jouw_app.models import User
@receiver(post_save, sender=User)
def stuur_verificatie_email(sender, instance, created, **kwargs):
if created:
# Actie: stuur verificatie-e-mail
verzend_verificatie_email(instance)
```
Hiermee wordt de functie `verzend_verificatie_email` aangeroepen telkens wanneer een nieuwe gebruiker wordt aangemaakt, en kun je daarin de logica voor het versturen van een verificatie-e-mail implementeren.
Kortom:
- Gebeurtenis: `post_save` voor het aangepaste `User`-model
- Actie: automatisch versturen van een verificatie-e-mail na het aanmaken van een nieuwe gebruiker
provider: deepseek
model: deepseek-chat
In jouw Django 3.2 project met een aangepast gebruikersmodel zijn dit de belangrijkste gebeurtenissen en acties:
**Specifieke gebeurtenissen en aangepaste acties:**
1. **post_save voor User-model** - ✅ **Primaire keuze**
- **Actie:** Verificatie-e-mail versturen bij nieuwe gebruikersregistratie
- **Implementatie:** Gebruik `@receiver(post_save, sender=User)` decorator
- **Controleer:** Of het een nieuwe gebruiker is met `created` parameter
2. **post_save voor UserProfile** (indien aanwezig)
- **Actie:** Automatisch profiel aanmaken bij nieuwe gebruiker
- **Handig voor:** Uitgebreide gebruikersinformatie
3. **pre_save voor User-model**
- **Actie:** Gegevens valideren voor opslaan
- **Bijvoorbeeld:** E-mailformaat controleren, wachtwoord hashen
4. **post_login signal** (via django-allauth)
- **Actie:** Laatste login bijwerken, activiteiten loggen
**Voorbeeld implementatie verificatie-e-mail:**
```python
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.core.mail import send_mail
from .models import User
@receiver(post_save, sender=User)
def send_verification_email(sender, instance, created, **kwargs):
if created:
# Stuur verificatie-e-mail naar instance.email
send_mail(
'Verifieer je account',
'Verificatie-inhoud hier...',
'noreply@jewebsite.nl',
[instance.email],
fail_silently=False,
)
```
Vergeet niet de signal handler te registreren in je `apps.py` of `__init__.py`!

