2013-09-02 8 views
1

내보기 :장고 형태로 자리 표시 자 request.user

form1 = UserProfile(request.POST or None, user=request.user) 

내 양식 : 요청 방법 설정/ 이름 '자체가'정의되지 않은 /에서

class UserProfile(forms.Form): 
    def __init__(self, *args, **kwargs): 
     self.user = kwargs.pop("user") 
     super(UserProfile, self).__init__(*args, **kwargs) 

    first_name = forms.CharField(max_length=30,required=True,widget=forms.TextInput(attrs={'placeholder': self.user.first_name })) 
    last_name = forms.CharField(max_length=30,required=True,widget=forms.TextInput(attrs={'placeholder': self.user.last_name })) 

나가서 설명하자면 NameError : GET 요청 URL :

http://localhost:8000/settings/ 

장고 버전 : 1.5.2 예외 유형 : 나가서 설명하자면 NameError 예외 가치 :

을 정의되지 않은 '자기'의 이름을 지금까지 해결책을 찾기 위해 노력하고, 지금까지 나는 다음이 코드를 내놓았다 여전히 오류가 있습니다.

+1

하면, 전체 스택 트레이스를하시기 바랍니다 게시 할 수 있을까요? –

+0

스택 트레이스 란 무엇입니까? 미안 해요, 나는 여전히 stackoverflow에 아주 새롭다. 방금 등록한이 문제로 인해 해결할 수 없습니다. 나는 단지 내 문제에 대한 해결책을 찾기를 원했고 request.user 객체 내부에서 내 자리 표시자를 만들 수있게되었다. – jackconsolidated

+0

클래스 코드를 들여 쓸 필요가있다. – Miquel

답변

0

self 변수는 메서드에서만 사용할 수 있으므로 양식 필드 정의에서는 self을 사용할 수 없습니다.

필드는 동적이며 생성자에서 전달 된 user 변수에 따라 달라집니다. 당신이 self.user이이 __init__.py에 동적 필드를 정의 :

class UserProfile(forms.Form): 
    def __init__(self, *args, **kwargs): 
     self.user = kwargs.pop("user") 
     super(UserProfile, self).__init__(*args, **kwargs) 

     self.fields['first_name'] = forms.CharField(max_length=30,required=True,widget=forms.TextInput(attrs={'placeholder': self.user.first_name })) 
     self.fields['last_name'] = forms.CharField(max_length=30,required=True,widget=forms.TextInput(attrs={'placeholder': self.user.last_name })) 

항목 :

+0

고마워요! 이 바보 같은 질문을해서 유감입니다. 도와 주셔서 감사합니다! – jackconsolidated

+0

나는 대답을 얻었다! self.fields [ 'first_name'] = forms.CharField (max_length = 30, 필수 = true, 위젯 = forms.TextInput (attrs = { '자리 표시 자 : user.first_name})) – jackconsolidated