Allow everybody to unsubscribe your messages, user accounts are not required.
- Free software: MIT license
- Documentation: https://django-opt-out.readthedocs.io.
- A single page form for opt-out feedback submission
- Feedback options text controlled from django admin
- Predefined feedback defaults available from django manage command
- Feedback translations done in django admin
- Feedback options selection based on tags supplied to the opt-out url
- Ability to preselect a feedback option
- Ability to change selected feedback options after submission
- Ability to set tag:value pair on opt-out url and store them on submission with user feedback
- Signal to modify opt-out form before rendering
- Signal on opt-out feedback submission
- Easily overridable thank you / goodbye view
- Opt-out form with a easily overridable base template
To run an example project for this django reusable app, click the button below and start a demo serwer on Heroku
Install Django Opt-out application:
pip install django-opt-out
Add it to your INSTALLED_APPS:
INSTALLED_APPS = (
...
'django_opt_out.apps.DjangoOptOutConfig',
...
)
Add Django Opt-out application's URL patterns:
from django_opt_out import urls as django_opt_out_urls
urlpatterns = [
...
url(r'^', include(django_opt_out_urls)),
...
]
Add unsubscribe links to your emails:
from django_opt_out.utils import get_opt_out_path
email='Django Opt-out <django-opt-out@niepodam.pl>'
unsubscribe = get_opt_out_path(email, 'some', 'tags', 'controlling', 'questionnaire')
# unsubscribe link will not have a domain name and scheme
# you can build prefix from request, but I prefer to set it in settings
from django.conf import settings
unsubscribe = settings.BASE_URL + unsubscribe
body = 'Hello, Regards\n\nUnsubscribe: ' + unsubscribe
from django.core import mail
message = mail.EmailMultiAlternatives(body=body, to=[email])
message.extra_headers['List-Unsubscribe'] = "<{}>".format(unsubscribe)
message.send()
Does the code actually work?
source <YOURVIRTUALENV>/bin/activate (myenv) $ pip install tox (myenv) $ tox
This package was created with Cookiecutter and the wooyek/cookiecutter-django-app project template.