2009-02-18 29 views
8

Tôi đang cố gắng xác thực biểu mẫu, sao cho nếu IP của người dùng (request.META['REMOTE_ADDR']) nằm trong bảng BlockedIPs, nó sẽ không xác thực được. Tuy nhiên, tôi không có quyền truy cập vào biến số request trong Form. Tôi phải làm nó như thế nào? Cảm ơn.IP bị cấm trong xác nhận biểu mẫu Django

Trả lời

9

Làm cho nó có sẵn để hình của bạn bằng cách ghi đè __init__ để nó có thể được thông qua trong quá trình xây dựng (hoặc bạn chỉ có thể vượt qua bản thân IP):

from django import forms 

class YourForm(forms.Form) 
    # fields... 

    def __init__(self, request, *args, **kwargs): 
     self.request = request 
     super(YourForm, self).__init__(*args, **kwargs) 

    # validation methods... 

Bây giờ bạn chỉ cần phải vượt qua các đối tượng request như đối số đầu tiên khi khởi tạo biểu mẫu và các phương thức xác thực tùy chỉnh của bạn sẽ có quyền truy cập vào nó thông qua self.request:

if request.method == 'POST': 
    form = YourForm(request, request.POST) 
    # ... 
else: 
    form = YourForm(request) 
# ... 
+0

cảm ơn, đó là chính xác những gì tôi đang tìm kiếm – pitr

Các vấn đề liên quan