Menu
CoddyTech

Ai đang truy cập

Thuộc phần Người dùng và tài khoản trong hành trình Django của Coddy. Bài học 1 trên 16.

Bất kỳ ai mở ứng dụng ghi chú này đều thấy mọi ghi chú. Để mỗi người có ghi chú riêng, trước tiên trang web cần biết ai đang truy cập.

Ứng dụng django.contrib.auth của Django lưu tài khoản trong mô hình User: tên người dùng, mật khẩu đã được băm và email. Khi ai đó đăng nhập, Django ghi nhớ họ bằng một phiên (session). Trình duyệt gửi lại một giá trị nhỏ, gọi là cookie, trong mỗi yêu cầu; giá trị này trỏ đến một hàng trên máy chủ.

Trong mỗi yêu cầu, Django gán khách truy cập vào request.user, còn template nhận giá trị đó dưới tên user. Khách truy cập chưa đăng nhập là AnonymousUser, vì vậy hãy kiểm tra bằng is_authenticated. Một cửa hàng chỉ hiển thị biểu ngữ với khách truy cập:

{% if not user.is_authenticated %}
    <p class="banner">Make an account to save your cart.</p>
{% endif %}
challenge icon

Thử thách

Dễ

Trong base.html, bên trong <div class="account">, hãy hiển thị ai đang truy cập. Khi có người đăng nhập, hộp này hiển thị Signed in as và tên người dùng của họ, chẳng hạn như Signed in as ada. Nếu không, hộp hiển thị You are not signed in.

Mở /: trang hiển thị You are not signed in. Đăng nhập tại /admin/ bằng tài khoản ada (mật khẩu coddy-pass-123), sau đó mở /: trang hiển thị Signed in as ada.

Tự làm thử

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>{% block title %}Notes{% endblock %}</title>
    <link rel="stylesheet" href="{% static 'notes/style.css' %}">
</head>
<body>
    <header>
        <a class="brand" href="{% url 'notes:list' %}">Notes</a>
        <nav>
            <a href="{% url 'notes:create' %}">New note</a>
        </nav>
        <div class="account">
        </div>
    </header>
    <main>
        {% block content %}{% endblock %}
    </main>
</body>
</html>

Tất cả bài học trong Người dùng và tài khoản

Tự luyện tập: Playground Django