urlmiddleware là một ứng dụng Django mà cho phép bạn xác định trung gian trong dự án Django của bạn dựa trên các cấu hình url thay vì thêm middleware trên toàn cầu với mọi yêu cầu duy nhất.
Tại sao?
Thêm middleware trên toàn cầu không phải là luôn luôn là một điều tốt. Bạn chỉ có thể muốn nó có hiệu lực trên các lĩnh vực nhất định trong trang web của bạn. Ứng dụng của bên thứ ba cũng có thể sau đó bao gồm các định nghĩa trung gian của họ trong các tập tin url.py và loại bỏ sự cần cho bạn để sửa đổi các thiết lập toàn cầu.
Quick Start
Cài đặt urlmiddleware:
pips cài đặt urlmiddleware
Không cần phải thêm nó vào các ứng dụng cài đặt của bạn, tuy nhiên, bạn cần phải đăng ký một lớp trung gian toàn cầu sau đó sẽ kiểm soát các trung gian url dựa trên:
MIDDLEWARE_CLASSES = (
& Nbsp; # ...
& Nbsp; # thêm urlmiddleware sau khi tất cả các trung gian khác.
& Nbsp; 'urlmiddleware.URLMiddleware',
)
Bắt đầu thêm trung gian để dự án của bạn trong các tập tin url.py của bạn dưới đây định nghĩa url bình thường của bạn:
middlewarepatterns = mẫu ('',
& Nbsp; url (r '^ myapp /', MyMiddleWareClass),
)
Một ví dụ phổ biến là sử dụng kỹ thuật này để thêm yêu cầu đăng nhập vào toàn bộ các phần phụ của cây url của bạn. Trước tiên, bạn cần phải tạo ra một LoginRequiredMiddleware:
từ django.conf thiết lập nhập khẩu
từ django.contrib.auth.views đăng nhập nhập khẩu
từ nhập khẩu django.http HttpResponseRedirect
lớp LoginRequiredMiddleware (object):
& Nbsp; def process_request (self, theo yêu cầu):
& Nbsp; login_path = settings.LOGIN_URL
& Nbsp; nếu request.path = login_path và request.user.is_anonymous ():
& Nbsp; nếu request.POST:
& Nbsp; đăng nhập trở lại (yêu cầu)
& Nbsp; khác:
& Nbsp; return HttpResponseRedirect ('% s next =% s?'% (Login_path, request.path))
Sau đó, trong tập tin urls.py của bạn:
từ myapp.middleware LoginRequiredMiddleware nhập khẩu
middlewarepatterns = mẫu ('',
& Nbsp; url (r '^ tài khoản /', LoginRequiredMiddleware),
)
! Done
Yêu cầu :
- Python
- Django
Bình luận không