python - 如何优雅地实现django的登录/注册?
迷茫
迷茫 2017-04-18 09:45:54
0
2
669

我是看的Django Book的教程,然后用最原始的方式实现的。请问关于登录和注册,Django有没有封装像ListView, DetailView, FormView这样的class来直接实现呢?


这是login代码的实现

def user_login(request):
    if request.POST:
        username = password = ''
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(username=username, password=password)
        if user is not None and user.is_active:
            login(request, user)
            return redirect('/')
    else:
        context = {}
        return render(request, 'account/login.html', context)

这是register代码的实现 

def user_register(request):
    if request.method == "POST":
        register_form = UserForm(request.POST)
        if register_form.is_valid():
            username = register_form.cleaned_data['username']
            password = register_form.cleaned_data['password']
            email = register_form.cleaned_data['email']

            user = User.objects.create_user(username, email, password)
            user.save()

            login(request, authenticate(username=username, password=password))
            return redirect('/')
    else:
        register_form = UserForm()
        context = {'register_form': register_form}
        return render(request, 'account/register.html', context)

这是logout代码的实现

def user_logout(request):
    logout(request)
    return redirect('/')

一般在实际开发过程中会采用什么方法实现登录/注册/登出呢?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全員に返信(2)
黄舟

まず、ログインするときに、フロントエンドのセッションまたは Cookie を計算する必要があります。ログイン後、フロントエンドは計算されたセッションまたは Cookie を受け取り、ログインしたことを通知します。私のログイン資格情報を取得した後、それが私が計算したものと同じかどうかを計算します。同じであれば、正常にログインしていることを意味します。単にページにジャンプするのではなく、情報は返されません。

当然ですが、登録が必要です。 。アカウントのパスワードをデータベースに書き込み、ログイン時にそれを使用し、それが正しい場合はログインに進みます。

ログアウトとは、Cookie やセッションの更新などのユーザーのログイン情報をクリアすることを意味します。ログアウトが検出されない場合は、ログイン ページにアクセスできないため、ログイン ページにジャンプしてリダイレクトすることができます。

いいねを押す +0
巴扎黑

フロントエンドから渡されたユーザー名とパスワードを確認する必要がありますか?

リーリー

登録と同じ

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート