password reset implementation with djoser

Lets describe the actions first:

  1. The user clicks on the link to reset the password. reset password
  2. (Here you need a form to obtain a username or email address, depending on your settings) The user enters the username and clicks Submit.
  3. The user receives an email with a link to reset the password.
  4. The link opens the browser, which contains the form "Create a new password".
  5. The user enters a new password and sends a form
  6. The browser redirects the page to the home page and gives feedback that the password has been reset.

You can then use following method to reset the password.

<p>Use the form below to change your password. Your password cannot be the same as your username.</p>
<form role="form" method="post">
  {% csrf_token %}
  <input type="password" name="password1" placeholder="New Password">
  <input type="submit">

from django.shortcuts import redirect, render
from djoser.conf import django_settings

def reset_user_password(request, uid, token):
    if request.POST:
        password = request.POST.get('password1')
        payload = {'uid': uid, 'token': token, 'new_password': password}

        url = '{0}://{1}{2}'.format(
            django_settings.PROTOCOL, django_settings.DOMAIN, reverse('password_reset_confirm'))

        response =, data=payload)
        if response.status_code == 204:
            # Give some feedback to the user. For instance:
            messages.success(request, 'Your password has been reset successfully!')
            return redirect('home')
            return Response(response.json())
        return render(request, 'templates/reset_password.html')