này làm việc cho tôi vào 'dự án' của tôi bảng/mô hình:
@permission_required('myApp.add_project')
def create(request):
# python code etc...
Rõ ràng là thay đổi add_project thành tiện ích bổ sung [bất kể model/bảng của bạn]. Để chỉnh sửa nó sẽ là:
@permission_required ('myApp.edit_project ')
và xóa:
@permission_required (' myApp.delete_project ')
Nhưng tôi thấy rằng điều quan trọng là để đảm bảo bảng auth bạn được thiết lập một cách chính xác. Đây là những gì gây ra cho tôi những vấn đề. Đây là một truy vấn SQL MySQL tôi đã viết để kiểm tra các điều khoản nếu bạn đang sử dụng các nhóm. Điều này sẽ làm việc trong hầu hết các DBS:
select usr.id as 'user id',usr.username,grp.id as 'group id',grp.name as 'group name',grpu.id as 'auth_user_groups',grpp.id as 'auth_group_permissions',perm.name,perm.codename
from auth_user usr
left join auth_user_groups grpu on usr.id = grpu.user_id
left join auth_group grp on grpu.group_id = grp.id
left join auth_group_permissions grpp on grp.id = grpp.group_id
left join auth_permission perm on grpp.permission_id = perm.id
order by usr.id;
tôi thấy rằng quyền của tôi đã không được thiết lập một cách chính xác, và cũng có thể xem ra cho bảng django_content_type mà phải có hàng cho mỗi ứng dụng và bảng cho mỗi add, chỉnh sửa, xóa . Vì vậy, nếu bạn có một bảng dự án, bạn sẽ thấy điều này trong django_content_type:
id [generated by dB]
app_label myApp
model project
Nếu bạn gặp khó khăn, ý tưởng hay là bật và sử dụng ứng dụng quản trị django. Điều này sẽ cho bạn biết vấn đề của bạn ở đâu và bằng cách thiết lập một số quyền kiểm tra, người dùng và nhóm, bạn có thể kiểm tra các bảng được thảo luận ở trên để xem những gì đang được chèn vào ở đâu. Điều này sẽ cung cấp cho bạn ý tưởng tốt về cách hoạt động của quyền auth.
Tôi viết điều này để có thể cứu một người nào đó phải mất một vài giờ để tìm ra những gì tôi đã làm!
Cảm ơn. Điều đó không hiệu quả. Bạn có ví dụ về cách sử dụng permission_required không? Từ tài liệu http://docs.djangoproject.com/en/1.0/topics/auth/#the-permission-required-decorator và http://www.djangobook.com/en/2.0/chapter14/ Tôi đã nghĩ những gì tôi đã làm việc. – Mitch
Ah. Tôi hiểu rồi. Cảm ơn vì đã kiên trì. – Mitch
Bạn có thể giải thích, điều gì đang xảy ra với thông số ** 'polls.can_vote' ** ở cuối? Mục đích của nó là gì và nó đề cập đến đâu? Có lẽ đó là tên của nhóm, phải là một thành viên của? –