gpt4 book ai didi

python - 如何在django中使用用户认证

转载 作者:可可西里 更新时间:2023-11-01 10:27:27 24 4
gpt4 key购买 nike

我有一个 html 模板,我想用它在 Django 中进行身份验证。我正在使用 pymongo 连接到远程 mongodb 和 fetch_data。远程 mongodb 有一个集合,其中包含演示用户的用户名和密码。我读到 django 有一个内置的身份验证模块,但我不想使用它。

我的模板:

<form action="/index.html">
<div class="form-group">
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-user"></i></div>
<input type="text" class="form-control" placeholder="Username">
</div>
</div>
<div class="form-group">
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-asterisk"></i></div>
<input type="password" class="form-control" placeholder="Password">
</div>
</div>
<div class="row">
<div class="col-xs-8 text-left checkbox">
<label class="form-checkbox form-icon">
<input type="checkbox"> Remember me
</label>
</div>
<div class="col-xs-4">
<div class="form-group text-right">
<button class="btn btn-success text-uppercase" type="submit">Sign In</button>
</div>
</div>
</div>
</form>

如何将数据从我的模板传递到我的 views.py 文件?目前我没有使用任何身份验证。

我的观点.py:

from django.shortcuts import render
from django.http import HttpResponse

def login(request):
return render(request, 'login/login.html')

在 Pymongo 中,我可以使用命令 db.getCollection('users').find({'email':'%s'}) {{email}} 来传递电子邮件和验证。

PS:我阅读的大多数教程都是关于 django 的内置身份验证的。

最佳答案

通用方法是编写自定义身份验证后端来为您处理身份验证。然后建议创建在您的模板中呈现的自定义表单。

身份验证后端

class YourBackend(object):
def authenticate(self, username=None, password=None):
# Check the username/password and return a User.

def get_user(self, user_id):
# return user by given user_id

设置

当您实现了自己的身份验证后端后,您应该在 django settings.py 中定义它。第一个是 django 的默认身份验证后端。

AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'your.own.authentication.backed',
)

表格

from django import forms

class YourLoginForm(forms.Form):
username = forms.CharField(max_length=254)
password = forms.CharField(label=_("Password"), widget=forms.PasswordInput)

查看

from django.shortcuts import render
from django.http import HttpResponse
from django.contrib.auth import authenticate, get_backends

def login(request):
form = YourLoginForm(request.POST or None)

if form.method == 'POST':
if form.is_valid():
user = authenticate(username=form.cleaned_data['username'], password=form.cleaned_data['password'])

if user:
# redirect user to somewhere

return render(request, 'login/login.html')

模板

<form action="{% url 'your-login' %}" method="POST">
{{ form.non_field_errors }}
<div class="form-group">
<div class="input-group">
{{ form.username.errors }}
<div class="input-group-addon"><i class="fa fa-user"></i></div>
{{ form.username }}
</div>
</div>
<div class="form-group">
<div class="input-group">
{{ form.username.errors }}
<div class="input-group-addon"><i class="fa fa-asterisk"></i></div>
{{ form.password }}
</div>
</div>
<div class="row">
<div class="col-xs-4">
<div class="form-group text-right">
<button class="btn btn-success text-uppercase" type="submit">Sign In</button>
</div>
</div>
</div>
</form>

网址

url(r'^login$', 'views.login', name='your-login'),

关于python - 如何在django中使用用户认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32326305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com