Djangoの大域使用request.user.usernameの実例


余計なことを言わないで、コードを見てください。

def pro_mgr():
  """
             
  :return:
  """
  if DEVELOP_USER_NAME == 'admin':
    return Project.objects.all()
  return Project.objects.filter(prj_mgr=DEVELOP_USER_NAME)


class DeployApplyForm(ModelForm):
  # project = forms.ModelChoiceField(queryset=pro_mgr())
  bgn_time = forms.DateTimeField(initial=datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S"), label=u'  ',
                  input_formats=['%Y-%m-%dT%H:%M:%S'], widget=forms.DateTimeInput(
      attrs={'type': 'datetime-local', 'emptyTips': u'     ', 'step': '1'}))
  end_time = forms.DateTimeField(initial=datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S"), label=u'  ',
                  input_formats=['%Y-%m-%dT%H:%M:%S'], widget=forms.DateTimeInput(
      attrs={'type': 'datetime-local', 'emptyTips': u'     ', 'step': '1'}))

  class Meta:
    model = DeployApply
    fields = '__all__'


  def __init__(self, *args, **kwargs):
    prj_mgr = kwargs.pop('prj_mgr', '')
    super(DeployApplyForm, self).__init__(*args, **kwargs)
    if prj_mgr == 'admin':
      self.fields['project'] = forms.ModelChoiceField(queryset=Project.objects.all())
    else:
      self.fields['project'] = forms.ModelChoiceField(queryset=Project.objects.filter(prj_mgr=prj_mgr))

//views.py
deployApplyForm = DeployApplyForm(initial=wfContent[0], prefix='deployApply',prj_mgr=request.user.username)

//settings.py
# DEVELOP       
DEVELOP_USER_NAME = 'admin'
補足知識:Djangoでrequest.userがユーザー名を呼び出すとAnonymousUser(匿名のオブジェクト)のエラーが発生します。
説明
追加の属性が追加されましたが、今はrequest.userによって取得したいです。プリントrequest.userはAnonymousUserオブジェクトで、user値を取得できません。
原因
1.アカウントを登録していないか、ログインできません。
2.ログインに成功しましたが、登録コードにクッキーが登録されていないため、認証できませんでした。
3.その他の理由。
解決方法
1.アカウントを登録して、adminアカウントを使って登録してみてもいいです。解決できるかどうか確認してください。
2.以下のコードを参考にして、loginにcookisを登録します。

auth_obj = auth.authenticate(request, username=username, password=password)
if auth_obj:
  #   auth  cookie
  auth.login(request, auth_obj)
  ....
3.別の方法でロゴを書き換える。
以上のDjangoの大局はrequest.user.usernameの実例を使って詳しく説明します。つまり、小編集は皆さんに提供した内容の全部を共有しています。