繁体   English   中英

每次用户登录(Django)时,如何在urls.py中生成随机URL?

[英]How to generate random URL in urls.py each time the user logs in (Django)?

我正在尝试创建一个随机 URL ,用户登录后只能访问一次。

每次用户登录时,我都使用django-sesame生成不同的 URL。为此,我在settings.py SESAME_ONE_TIME设置设置为True ,并且我能够将用户重定向到随机 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中,我不知道如何将urlpatterns正确添加到 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.pyurl_extension的属性并将其用作urls.py中的function.url_extension )?

您应该使用正则表达式,让您在开始时和之后的任何事情上都取得成功。 您在 url 中的正则表达式将是这样的 - 成功/.*$。 此检查是否成功,然后在 / 之后允许 *(everything)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM