0
我有一個簡單的網站,用戶可以註冊才能訪問私人內容並獲得簡報。我使用django-registration進行用戶註冊和身份驗證,並使用here的一些HTML模板。Django註冊:如何允許用戶刪除他們的帳戶?
整個系統正在運行(登錄,註銷,密碼恢復等),但我意識到用戶不能從網站上刪除他們的帳戶。有沒有爲此設計的插件,或者如何擴展註冊類來做到這一點?通過刪除,我更喜歡真正的壓制,而不僅僅是讓用戶不活躍。
我有一個簡單的網站,用戶可以註冊才能訪問私人內容並獲得簡報。我使用django-registration進行用戶註冊和身份驗證,並使用here的一些HTML模板。Django註冊:如何允許用戶刪除他們的帳戶?
整個系統正在運行(登錄,註銷,密碼恢復等),但我意識到用戶不能從網站上刪除他們的帳戶。有沒有爲此設計的插件,或者如何擴展註冊類來做到這一點?通過刪除,我更喜歡真正的壓制,而不僅僅是讓用戶不活躍。
你可以做這樣的事情:
def delete_user(request, username):
context = {}
try:
u = User.objects.get(username=username)
u.delete()
context['msg'] = 'The user is deleted.'
except User.DoesNotExist:
context['msg'] = 'User does not exist.'
except Exception as e:
context['msg'] = e.message
return render(request, 'template.html', context=context)
而且有一個URL模式,如:
url(r'^delete/(?P<username>[\w|\W.-]+)/$', views.delete_user, name='delete-user')
這將做的工作。它將通過給定的用戶名來刪除用戶。
但,如the docs說:
is_active
布爾。指定是否應將此用戶帳戶視爲活動用戶。 我們建議您將此標誌設置爲
False
而不是刪除帳戶;這樣,如果您的應用程序對用戶有任何外鍵,則外鍵不會中斷。
這是一種更好的方法來設置用戶爲不活躍,而不是從數據庫中刪除完全是,因爲外鍵將打破。
因此,你可以簡單地做:
def delete_user(request, username):
context = {}
try:
user = User.object.get(username=username)
user.is_active = False
user.save()
context['msg'] = 'Profile successfully disabled.'
except User.DoesNotExist:
# ...
except Exception as e:
# ...
# ...
正如現在每個人都可以訪問此視圖,您必須添加一些權限。一個簡單的方法將覆蓋內置@user_passes_test
修飾者:
@user_passes_test(lambda u: u.is_staff, login_url=reverse_lazy('login'))
def delete_user(request, username):
# ...