2017-12-18 11 views
0

でユーザー名を取得します違う?は、私は、フォームでログインしているユーザー名を取得しようとしていますが、私は次のエラーメッセージを持っていますフォーム

私はここで

self.request = kwargs.pop('request', None) 
self.user_name =self.request.user.username 

に何か問題があると思いますが、私のフォームで

class MyForm(forms.Form): 

List = forms.ChoiceField(choices=()) 

def __init__(self, *args, **kwargs):   
    self.request = kwargs.pop('request', None) 
    self.user_name =self.request.user.username 
    super(MyForm, self).__init__(*args, **kwargs) 
    self.fields['List'].choices = self.list_people() 

def list_people(self):  
    u = User.objects.get(username=self.user_name).accesslevel.segmentation.split(',') 
    v=(('---------','---------'),) 
    for l in u: 
     v=v+((l.lstrip(),l.lstrip()),) 
    return v 

Views.py

def list_table(request): 

    if request.method == 'POST': 
     form = MyForm(request.POST,request=request) 
    else: 
     form = MyForm() 

    .... 

トレースバック

Traceback (most recent call last): 
    File "C:\Users\PC\Anaconda2\lib\site-packages\django\core\handlers\exception.py", line 41, in inner 
    response = get_response(request) 
    File "C:\Users\PC\Anaconda2\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "C:\Users\PC\Anaconda2\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "C:\Users\PC\folder..\views.py", line 74, in list_table 
    form = MyForm() 
    File "C:\Users\PC\folder..\forms.py", line 24, in __init__ 
    self.user = self.request.user.username 
AttributeError: 'NoneType' object has no attribute 'user' 
+0

request.userをやって、ビュー内のそれへのアクセス権を持っています取得する? –

+0

こんにちはDaniel、申し訳ありませんが、私はあなたの質問を理解していませんでした。もう少し説明していただけますか? –

+0

他に解決策がありますか?私は本当にそれに固執しているので?私はちょうどフォームから使用するためにビューから情報を渡す必要があります –

答えて

0

POSTがあるときだけでなく、メソッドがGETのときにも要求を渡してみてください。あなただけのユーザーをしたい場合

def list_table(request): 
    if request.method == 'POST': 
     form = MyForm(request.POST, request=request) 
    else: 
     form = MyForm(request=request) 

とにかく、あなたはすでにあなたが他のブランチでフォームの初期化時に、あなたがのために、要求に渡してください。

関連する問題