Я пытаюсь создать случайный URL-адрес, к которому можно будет получить доступ только один раз после входа пользователя в систему.
Я использую django-sesame
для генерации разных URL-адресов каждый раз, когда пользователь входит в систему. Для этого Я установил для параметра SESAME_ONE_TIME
значение True
в settings.py
, и я могу перенаправить пользователя на случайный URL-адрес следующим образом:
views.py
:
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, redirect
from .models import my_model
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth import update_session_auth_hash
import sesame
@login_required()
def password_form(request):
url_extension = sesame.utils.get_query_string(request.user)
if request.method == 'POST':
form = PasswordChangeForm(request.user, request.POST)
if form.is_valid():
user = form.save()
update_session_auth_hash(request, user)
return redirect('/success/' + url_extension)
else:
form = PasswordChangeForm(request.user)
context = {'form': form}
return render(request, "form.html", context)
Однако в urls.py
я не знаю, как правильно добавить URL-адрес в urlpatterns
. Возможно, это звучит странно, но из-за отсутствия лучшей формулировки можно ли каким-либо образом добавить параметр, который может принимать случайно сгенерированное значение в path
, например:
urls.py
:
from app.views import password_form
urlpatterns = [path('success/' + random_variable, password_form),]
Если нет, могу ли я сделать переменную url_extension
глобальной, чтобы я мог использовать ее в urls.py
, минуя необходимость request
(например, установив url_extension
как атрибут функции в views.py
и использовать его как function.url_extension
в urls.py
)?