2009-12-03 20 views

Trả lời

3

Bạn luôn có thể sửa đổi this line tới:

new_user = RegistrationProfile.objects.create_inactive_user(username=self.cleaned_data['username'], 
             password=self.cleaned_data['password1'], 
             email=self.cleaned_data['email'], 
             profile_callback=profile_callback, 
             send_email = False) 

Hoặc bạn có thể thay đổi this line tới:

def create_inactive_user(self, username, password, email, 
         send_email=False, profile_callback=None): 
+2

Bạn cần phải gọi activate_user dù (hoặc khác tài khoản của người dùng sẽ không sử dụng được) – Jiaaro

+1

Trong phiên bản mới của django đăng ký, tập tin forms.py doesn' t như thế này cho đến nay. Kiểm tra liên kết này: http://bitbucket.org/ubernostrum/django-registration/src/tip/registration/forms.py – anhtran

+0

điều này thực sự đơn giản để thực hiện mà không cần sửa đổi mã. oh. tôi không nhận ra câu trả lời này bao nhiêu tuổi ... – teewuane

1

Thay vì sửa đổi ứng dụng đăng ký, tại sao không chỉ kích hoạt cho người dùng same way django-registration does:

user.is_active = True user.save() profile.activation_key = "ALREADY_ACTIVATED" profile.save()

Sau khi xem xét nó thậm chí nhiều hơn ... Tôi nghĩ rằng những gì bạn muốn là sử dụng cả các giải pháp. Có lẽ thêm mã trên, chỉ cần sau khi thay đổi được đề xuất bởi Dominic (mặc dù tôi sẽ đề nghị sử dụng tín hiệu, hoặc subclassing biểu mẫu nếu có thể)

OK trả lời cuối cùng:

new_user = RegistrationProfile.objects.create_inactive_user(username=self.cleaned_data['username'], 
            password=self.cleaned_data['password1'], 
            email=self.cleaned_data['email'], 
            profile_callback=profile_callback, 
            send_email = False) 
RegistrationProfile.objects.activate_user(new_user.activation_key) 
+0

Tôi có nhầm không? Tôi đã không thử mã của tôi ra, chỉ cần nhìn vào mã trong django-đăng ký. –

+0

Không, tôi thực sự chỉ chỉnh sửa câu trả lời của mình vì tôi nghĩ cả hai giải pháp của chúng tôi là cần thiết :) – Jiaaro

+0

nơi nào điều này xảy ra? bạn có biết cách để làm điều này mà không sửa đổi mã đăng ký django không? Tôi đang nghĩ như một tín hiệu khi người dùng được tạo .. – teewuane

6

Tốt hơn để sửa chữa các vấn đề ở gốc hơn là băng bằng cách gọi các lệnh để tự động kích hoạt người dùng.

Thêm phương pháp này để models.py đăng ký:

def create_active_user(self, username, email, password, 
          site): 
     """ 
     Create a new, active ``User``, generate a 
     ``RegistrationProfile`` and email its activation key to the 
     ``User``, returning the new ``User``. 
     """ 
     new_user = User.objects.create_user(username, email, password) 
     new_user.is_active = True 
     new_user.save() 

     registration_profile = self.create_profile(new_user) 

     return new_user 
    create_active_user = transaction.commit_on_success(create_active_user) 

Sau đó, chỉnh sửa đăng ký/backend/giá trị mặc định/init py và tìm ra phương pháp đăng ký().

Thay đổi như sau để gọi phương thức mới của bạn:

#new_user = RegistrationProfile.objects.create_inactive_user(username, email, 
                  #password, site) 
new_user = RegistrationProfile.objects.create_active_user(username, email, 
                  password, site) 
+0

tôi đã làm theo quy trình của bạn nhưng khi tôi nhập người dùng, nó sẽ không được kích hoạt. – XMen

13

Trong các phiên bản đầu hiện tại của django đăng ký có một backend đơn giản không có email và bạn có thể viết backend của riêng bạn để xác định các công việc bạn muốn . Xem tại đây https://bitbucket.org/ubernostrum/django-registration/src/fad7080fe769/docs/backend-api.rst để biết tài liệu.

Để sử dụng email đơn giản không có email, chỉ cần thay đổi url của bạn để trỏ đến chương trình phụ trợ này, ví dụ:

(r'^accounts/', include('registration.backends.simple.urls')),  
+0

đây là câu trả lời đúng –

7

Tại sao không sử dụng this method và chỉ sử dụng chương trình phụ trợ đơn giản đi kèm đăng ký django thay vì chương trình phụ trợ mặc định?

Luồng công việc mới sẽ là ... 1. Người dùng đăng ký bằng cách điền vào biểu mẫu đăng ký. 2. Tài khoản của người dùng được tạo và hoạt động ngay lập tức, không có bước xác nhận hoặc kích hoạt trung gian. 3. Người dùng mới được đăng nhập ngay lập tức.

do đó, trên các url chính của bạn.py bạn sẽ thay đổi:

url(r'^accounts/', include('registration.backends.default.urls')), 

để

url(r'^accounts/', include('registration.backends.simple.urls')), 
Các vấn đề liên quan