Làm cách nào để tạo biểu mẫu đăng nhập trong python?

Chào mừng đến với phần 8 của loạt bài hướng dẫn phát triển web với Python và Django. Tại đây, chúng tôi sẽ tiếp tục xử lý người dùng của mình và chúng tôi sẽ mang lại khả năng cho người dùng đăng nhập và đăng xuất

Hãy bắt đầu với việc đăng xuất, vì điều đó cực kỳ dễ dàng. Chúng tôi không cần phải thiết kế bất cứ thứ gì cho nó và Django đã có chức năng

...
  def logout_request[request]:
    logout[request]
    messages.info[request, "Logged out successfully!"]
    return redirect["main:homepage"]
  ...
6

Được rồi, hãy bắt đầu với URL, nó phải là

...
  def logout_request[request]:
    logout[request]
    messages.info[request, "Logged out successfully!"]
    return redirect["main:homepage"]
  ...
7, vì vậy hãy chuyển sang
...
  def logout_request[request]:
    logout[request]
    messages.info[request, "Logged out successfully!"]
    return redirect["main:homepage"]
  ...
0 và thêm đường dẫn cho URL đó

from django.urls import path
from . import views


app_name = 'main'  # here for namespacing of urls.

urlpatterns = [
    path["", views.homepage, name="homepage"],
    path["register/", views.register, name="register"],
    path["logout", views.logout_request, name="logout"],
]

Bây giờ chúng ta đã có URL cho nó, hãy tạo chế độ xem mà chúng ta đã quyết định sẽ là một chức năng có tên là

...
  def logout_request[request]:
    logout[request]
    messages.info[request, "Logged out successfully!"]
    return redirect["main:homepage"]
  ...
1

Đây là một ví dụ tuyệt vời về nơi bạn có thể quyết định gọi chức năng của mình là "đăng xuất". nhưng chúng tôi đang cố gắng sử dụng đăng xuất khỏi Django. Chúng tôi chắc chắn không muốn mắc lỗi đó, vì vậy hãy đảm bảo không gọi nó giống như chức năng mà chúng tôi sẽ cố gắng sử dụng. Điều tương tự khi chúng ta thực hiện chức năng

...
  def logout_request[request]:
    logout[request]
    messages.info[request, "Logged out successfully!"]
    return redirect["main:homepage"]
  ...
2 của mình. chúng ta sẽ phải gọi nó là một cái gì đó khác hơn thế

_______03____0

Bây giờ, hãy làm mới trang web của chúng tôi và nhấp vào đăng xuất. Làm

Được rồi, bây giờ có vẻ như là thời điểm tốt để làm trang đăng nhập. Để bắt đầu, hãy bắt đầu từ

...
  def logout_request[request]:
    logout[request]
    messages.info[request, "Logged out successfully!"]
    return redirect["main:homepage"]
  ...
4 vì dù sao thì chúng ta cũng đã ở đây rồi. Chúng ta sẽ bắt đầu với

from django.contrib.auth.forms import UserCreationForm, AuthenticationForm

...

def login_request[request]:
    form = AuthenticationForm[]
    return render[request = request,
                  template_name = "main/login.html",
                  context={"form":form}]

Tiếp theo, hãy làm việc trên trang html.

...
  def logout_request[request]:
    logout[request]
    messages.info[request, "Logged out successfully!"]
    return redirect["main:homepage"]
  ...
5

{% extends 'main/header.html' %}

{% block content %}

    
{% csrf_token %} {{form.as_p}} Login Don't have an account? register here!
{% endblock %}

Cuối cùng, chúng ta chỉ cần thêm một liên kết vào

...
  def logout_request[request]:
    logout[request]
    messages.info[request, "Logged out successfully!"]
    return redirect["main:homepage"]
  ...
6

from django.urls import path
from . import views


app_name = 'main'  # here for namespacing of urls.

urlpatterns = [
    path["", views.homepage, name="homepage"],
    path["register/", views.register, name="register"],
    path["logout", views.logout_request, name="logout"],
]
1

Được rồi, bây giờ nếu chúng ta truy cập vào

...
  def logout_request[request]:
    logout[request]
    messages.info[request, "Logged out successfully!"]
    return redirect["main:homepage"]
  ...
7, chúng ta có thể thấy một trang đăng nhập. Tuyệt vời, ngoại trừ điều đó, giống như trang đăng ký của chúng tôi, sẽ không có gì xảy ra trừ khi chúng tôi xử lý yêu cầu
...
  def logout_request[request]:
    logout[request]
    messages.info[request, "Logged out successfully!"]
    return redirect["main:homepage"]
  ...
8, đó là nơi mà nội dung của trang này sẽ thực sự diễn ra

...
  def logout_request[request]:
    logout[request]
    messages.info[request, "Logged out successfully!"]
    return redirect["main:homepage"]
  ...
3
from django.urls import path
from . import views


app_name = 'main'  # here for namespacing of urls.

urlpatterns = [
    path["", views.homepage, name="homepage"],
    path["register/", views.register, name="register"],
    path["logout", views.logout_request, name="logout"],
]
5

Cùng với đó, hãy tiếp tục và thử chức năng đăng nhập và bạn sẽ thấy rằng mình đã hoàn tất

Cuối cùng, hãy thay đổi một điều cuối cùng về đăng ký người dùng của chúng tôi. Hiện tại, chúng tôi không thu thập email của người dùng, điều này có thể trở nên khá rắc rối sau này đối với những thứ như quên mật khẩu. Làm thế nào chúng ta có thể thay đổi điều này? . Tôi sẽ chọn chỉ mở rộng biểu mẫu Django. Để làm điều này, hãy tạo một tệp mới.

from django.contrib.auth.forms import UserCreationForm, AuthenticationForm

...

def login_request[request]:
    form = AuthenticationForm[]
    return render[request = request,
                  template_name = "main/login.html",
                  context={"form":form}]
0

from django.contrib.auth.forms import UserCreationForm, AuthenticationForm

...

def login_request[request]:
    form = AuthenticationForm[]
    return render[request = request,
                  template_name = "main/login.html",
                  context={"form":form}]
1
from django.urls import path
from . import views


app_name = 'main'  # here for namespacing of urls.

urlpatterns = [
    path["", views.homepage, name="homepage"],
    path["register/", views.register, name="register"],
    path["logout", views.logout_request, name="logout"],
]
8

Sau đó, bên trong

...
  def logout_request[request]:
    logout[request]
    messages.info[request, "Logged out successfully!"]
    return redirect["main:homepage"]
  ...
4 của chúng tôi, thay vào đó, chúng tôi cần nhập
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm

...

def login_request[request]:
    form = AuthenticationForm[]
    return render[request = request,
                  template_name = "main/login.html",
                  context={"form":form}]
3 của mình

...
  def logout_request[request]:
    logout[request]
    messages.info[request, "Logged out successfully!"]
    return redirect["main:homepage"]
  ...
4
...
  def logout_request[request]:
    logout[request]
    messages.info[request, "Logged out successfully!"]
    return redirect["main:homepage"]
  ...
2

Sau đó thay thế hai trường hợp của

from django.contrib.auth.forms import UserCreationForm, AuthenticationForm

...

def login_request[request]:
    form = AuthenticationForm[]
    return render[request = request,
                  template_name = "main/login.html",
                  context={"form":form}]
5 bằng
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm

...

def login_request[request]:
    form = AuthenticationForm[]
    return render[request = request,
                  template_name = "main/login.html",
                  context={"form":form}]
3 trong hàm
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm

...

def login_request[request]:
    form = AuthenticationForm[]
    return render[request = request,
                  template_name = "main/login.html",
                  context={"form":form}]
7. Bây giờ hãy đảm bảo rằng bạn đã đăng xuất và đăng ký người dùng mới. Lần này, sẽ có một trường mật khẩu

Chúng tôi không cần cập nhật bất kỳ mô hình nào vì chúng tôi đang sử dụng mô hình Người dùng Django, đã có trường email

Tiếp theo, nếu chúng tôi thực sự thêm các hướng dẫn đầy đủ, chúng tôi sẽ gặp một số rắc rối vì trang chủ của chúng tôi sẽ nhanh chóng bị lấp đầy. Chúng ta sẽ nói về cách xử lý vấn đề này bằng cách sử dụng các khóa ngoại để trỏ đến các danh mục và chuỗi hướng dẫn

Chủ Đề