2012-11-23 2 views
5

내 프로젝트에 django-registration을 사용하고 있습니다. 내 registration_form.html 파일 :장고 등록 양식에 자리 표시자를 추가하는 방법

{{form.username}} 
{{form.email}} 
//other fields 

는 그리고 각 필드에 자리를 설정합니다. 하지만 이것은 일종의 빌트인 앱입니다. 그래서 내 주요 애플 리케이션에서 이러한 필드를 편집하는 방법을 찾아야합니다.

장고 등록 소스를 변경하고 싶지 않습니다.

+0

여기 또는 내장 양식을 사용하여 사용자 정의 django 양식을 정의합니까? – arulmr

+0

기본 제공 [양식] (http://docs.b-list.org/django-registration/0.8/forms.html?highlight=registration%20form#registration.forms.RegistrationFormUniqueEmail) – alix

+0

괜찮습니까? jQuery를 사용하여 필드에 자리 표시자를 추가 하시겠습니까? – arulmr

답변

20

이 내장 된 형태를 오버라이드 (override) 할 수있는 경우는 다음과 같이, 당신이 자리를 정의 할 수 있습니다 :

class RegistrationForm(forms.ModelForm): 
    class Meta: 
     model = YourModelName 
     widgets = { 
      'username' : forms.TextInput(attrs = {'placeholder': 'Username'}), 
      'email' : forms.TextInput(attrs = {'placeholder': 'E-Mail'}), 
     } 

을 아니면 사용하여 필드에 자리 표시자를 추가 jQuery를 사용할 수 아래로 해당 필드의 id :

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script type="text/javascript" > 
    $(document).ready(function(){ 
     $("#id_username").attr('placeholder', '{{form.username.label}}'); 
     $("#id_email").attr('placeholder', '{{form.email.label}}'); 
    }); 
</script> 

당신은 필드의 id을 찾기 위해 firebug를 사용할 수 있습니다.

+0

감사합니다. 그것은 효과가 있었다. – alix

+0

도와 드리겠습니다. – arulmr

+0

"기본 제공 양식을 재정의하는 방법"을 추가하는 답을 편집 할 수 있습니까? 예를 들어, "accounts"라는 디렉토리를 만들었습니다. "forms.py"라는 모듈을 만들었지 만,이 모듈은 urls.py에서 호출해야합니다. – realnot

11

필자는 실제로 필드를 수정하는 템플릿 태그 필터를 만듭니다.

@register.filter 
def html_placeholder(field, args=None): 
    if args == None: 
     return field 
    field.field.widget.attrs.update({ "placeholder": args }) 
    return field 
+1

https://docs.djangoproject.com/en/dev/howto/custom-template-tags/ – max4ever

1

(그리고 나뿐만 아니라 귀하의 경우에 작동합니다 가정) django.contrib.auth.AuthenticationForm 위해 일하는 또 다른 방법은,보기를 렌더링하는 동안이 정보를 주입하는 것입니다. 그렇게하면 폼 클래스에 포함시킬 필요가 없으며 jquery를 강제로 수행 할 필요가 없습니다.

def index(request): 
    form = AuthenticationForm(request) 
    form.fields['username'].widget.attrs.update({ 
      'placeholder': 'Name' 
     }) 
    form.fields['password'].widget.attrs.update({ 
      'placeholder': 'Password' 
     }) 

    context = RequestContext(request, { 
     'form' : form, 
    }) 
    return HttpResponse(template.render(context)) 
관련 문제