我必须将views.py文件中的“is_staff”选项更改为禁用Django-admin页面,但我无法弄清楚以下问题。 每当我试图写“user.is_staff”时,它听起来没有任何选择它(is_staff),而is_active存在。这是导入问题吗?
以下是我导入的内容:
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.contrib.auth.models import User
from django.http import HttpResponseForbidden, HttpResponse
from django.shortcuts import get_object_or_404
from django.views.generic.list_detail import object_detail
from django.views.generic.simple import direct_to_template
from django.utils.translation import ugettext as _
from django.core.mail import send_mail
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
以下代码我在views.py中写道:
def user_change_status(request, id):
user = User.objects.get(pk=id)
if user.is_staff:
user.is_staff = False
else:
user.is_active = True
return HttpResponse('')
整个场景是我有一个模板,用他/她的is_staff选项显示所有用户的列表(True / False)。当超级用户选择任何用户is_staff选项时,我想要的是它变为更改并且页面将在同一页面上重定向。
编辑后: 在views.py中定义了两种方法:
def user_change_status(request, id):
user = User.objects.get(pk=id)
if user.is_active:
user.is_staff = False
else:
user.is_staff = True
user.save()
value2 = user.is_staff
return HttpResponse(value2)
另一个是`
def user_block(request, id):
user = User.objects.get(pk=id)
if user.is_active:
user.is_active = False
else:
user.is_active = True
user.save()
value1 = user.is_active
return HttpResponse('value1')
我想更改is_staff值和is_active值。方法user_change_status不起作用,而user_block起作用。
答案 0 :(得分:5)
Python是一种动态语言。特别是,它不是Java或C ++。通常,IDE在动态语言中自动完成功能非常糟糕。
任何IDE作为自动完成选项提供或不提供的内容都是完全错误的。有时它会把它弄好,有时则不会。有时候它会提供不属于对象成员的选项。
使用文档,而不是IDE。
答案 1 :(得分:1)
user_change_status
删除了活跃用户的is_staff
,但为非活动用户启用了is_staff
,这是您想要做的吗?实际上,它不是关于切换is_staff值吗?
我问,因为user_block
切换了is_active
值。
如果是,您应该替换
if user.is_active:
user.is_staff = False
与
if user.is_staff:
user.is_staff = False