首页 > 解决方案 > 我将如何在 django 中实现锁屏登录

问题描述

我有一个锁屏页面,它只包含一个密码字段(INPUT)和密码字段上方的用户名图像。请记住,锁定屏幕与登录页面不同。

请注意:- 登录表单需要用户名和密码,而锁定屏幕表单只需要密码,因为用户实际上并没有注销,但据我所知,它保存在某个地方。

这是简单的登录功能view.py

def lockscreen(request):

    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(request, username=username, password=password)

        if user is not None:
            login(request, user)
            return redirect('core:dashboard')

        else:
            messages.info(request, 'Username OR Password is incorrect!')

    context = {}
    return render(request, 'accounts/lockscreen.html', context)

html

<div class="auth-form-transparent text-left p-5 text-center">
                <img src="{% static 'images/faces/face15.jpg' %}" class="lock-profile-img" alt="img">
                <form class="pt-5" method="POST">
                    {% csrf_token %}
                  <div class="form-group">
                    <label for="examplePassword1">Password to unlock</label>
                    <input type="password" name="password" class="form-control text-center" id="exampleInputPassword" placeholder="Password">
                  </div>
                  <div class="mt-5">
                    <button type="submit" value="Login" class="btn btn-block btn-gradient-primary btn-lg font-weight-medium auth-form-btn" >Unlock</button>
                  </div>
                  <div class="mt-3 text-center">
                    <a href="{% url 'login' %}" class="auth-link">Sign in using a different account</a>
                  </div>
                </form>
              </div>

表格.py

class CreateUserForm(UserCreationForm):
    username        = forms.CharField(max_length=255, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'User Name ...'}))
    password1       = forms.CharField(widget=forms.PasswordInput(attrs={'class': 'form-control', 'placeholder':'Password ...'}))
    password2       = forms.CharField(widget=forms.PasswordInput(attrs={'class': 'form-control', 'placeholder':'Confirm Password ...'}))
    email           = forms.CharField(max_length=255, widget=forms.EmailInput(attrs={'class': 'form-control', 'placeholder':'E-mail ...'}))

    name            = forms.CharField(max_length=255, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Full Name ...'}))
    phone           = forms.CharField(max_length=255, widget=forms.NumberInput(attrs={'class': 'form-control', 'placeholder':'Phone Number ...'}))
    account_type    = forms.ChoiceField(choices = ACCOUNT_TYPE,  widget=forms.Select(attrs={'class': 'form-control', 'placeholder':'Phone Number ...'}))



    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']

任何想法如何实现这种情况。谢谢

标签: djangodjango-forms

解决方案


当他登录时,您可以将用户名保存在会话中。

https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Sessions

有了这个,您可以在锁屏功能中访问用户名。


推荐阅读