-1

「is_staff」オプションをviews.pyファイルからDjango-adminページを無効にするように変更する必要がありますが、この次の問題を理解できません。「user.is_staff」を書き込もうとすると、is_activeが存在するのに、それを選択するオプション(is_staff)がないように聞こえます。この輸入の問題ですか?

以下は私がインポートしているコンテンツです:

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で2つのメソッドが定義されています:

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)

もう1つは`

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は機能しています。

4

2 に答える 2

5

Python は動的言語です。特に、Java や C++ ではありません。原則として、IDE は動的言語のオートコンプリートで非常にうまく機能しません。

IDE がオートコンプリート オプションとして提供するものと提供しないものに注意を払うのは完全な間違いです。うまくいく場合もあれば、そうでない場合もあります。オブジェクトのメンバーではないオプションを提供する場合があります。

IDE ではなく、ドキュメントを使用してください。

于 2012-05-13T12:25:57.830 に答える
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
于 2012-05-13T11:16:05.033 に答える