Email verificator app for django
Project description
Readme in progress
Requirements
- Python >= 3.6
- Django 2.2
General concept
Installation
You can install by:
pip3 install django-email-verification
and import by:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
...
'django_email_verification', # you have to add this
]
Settings parameters
You have to add these parameters to the settings, you have to include all of them except the last one:
EMAIL_SERVER = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_ADDRESS = 'mymail@gmail.com'
EMAIL_PASSWORD = 'mYC00lP4ssw0rd'
EMAIL_MAIL_SUBJECT = 'Confirm your email'
EMAIL_MAIL_HTML = 'mail_body.html'
EMAIL_MAIL_PLAIN = 'mail_body.txt'
EMAIL_PAGE_TEMPLATE = 'confirm_template.html'
EMAIL_PAGE_DOMAIN = 'http://mysite.com/'
EMAIL_MODEL_ADMIN = False # the default value is False
In detail:
EMAIL_SERVER
: your mail provider's server (e.g.'smtp.gmail.com'
for gmail)EMAIL_PORT
: your mail provider's server port (e.g.587
for gmail)EMAIL_ADDRESS
: your email addressEMAIL_PASSWORD
: your email address' passwordEMAIL_MAIL_
:SUBJECT
: the mail default subject (needed)HTML
: the mail body in form of html (not needed)PLAIN
: the mail body in form of .txt file (needed ifHTML
is not defined)
EMAIL_PAGE_TEMPLATE
: the template of the success/error viewEMAIL_PAGE_DOMAIN
: the domain of the confirmation link (usually your site's domain)EMAIL_MODEL_ADMIN
: True if you want to see the model in the admin panel (only for debugging purposes)
Templates examples
The EMAIL_MAIL_HTML
should look like this ({{ link }}
is passed during the rendering):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
h1{ color: blue; }
</style>
</head>
<body>
<h1>You are almost there!</h1><br>
<h2>Please click <a href="{{ link }}">here</a> to confirm your account</h2>
</body>
</html>
The EMAIL_MAIL_PLAIN
should look like this ({{ link }}
is passed during the rendering):
You are almost there!
Please click the following link to confirm your account
{{ link }}
The EMAIL_PAGE_TEMPLATE
should look like this ({{ success }}
is boolean and passed during the rendering):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Confirmation</title>
<style>
body{ color: blue; }
</style>
</head>
<body>
{% if success %}
You have confirmed your account!
{% else %}
Errore, invalid token!
{% endif %}
</body>
</html>
Email sending
After you have created the user you can send the confirm email
from django.shortcuts import render
from django.contrib.auth import get_user_model
from django_email_verification import sendConfirm
def myCreateView(request):
...
user = get_user_model().objects.create(username=username, password=password, email=email)
sendConfirm(user)
return render(...)
sendConfirm(user)
sets user's is_active
to False
and sends an email with the defined template (and the pseudo-random generated token) to the user.
Token verification
You have to include the urls in urls.py
from django.contrib import admin
from django.urls import path, include
from django_email_verification import urls as mail_urls
urlpatterns = [
path('admin/', admin.site.urls),
...
path('email/', include(mail_urls)),
]
When a request arrives to https.//mydomain.com/email/<token>
the package verifies the token and:
- if it corresponds to a pending token it renders the
EMAIL_PAGE_TEMPLATE
passingsuccess=True
and deletes the token - if it doesn't correspond it renders the
EMAIL_PAGE_TEMPLATE
passingsuccess=False
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-email-verification-0.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8cf903102f870c9a14d1a9de563866ac0fdf71b3349bbc8acab817e9f54d60b |
|
MD5 | ed23bea5cc23d6527a9303fcd7b60f86 |
|
BLAKE2b-256 | 869753296d4ee01125782f3236ad3f3636ad7f1c3558f9fe72e3bc708154516b |
Hashes for django_email_verification-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 789b6fe97f54278693ee02fcffdefdc56a263d0b48434984db683a282f44ed26 |
|
MD5 | 4c0dd412ae6490cc1568009d8d6738ff |
|
BLAKE2b-256 | 1f648d4ced3f6676ba856d6fba7f7b4778353a0095a4f72e639399a66fe4e369 |