2012-11-23 30 views
5

Tôi đang sử dụng đăng ký django cho dự án của mình. trong tệp registration_form.html của tôi:Cách thêm trình giữ chỗ vào các hình thức của Django-Registration

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

Và tôi muốn đặt trình giữ chỗ cho từng trường. Nhưng đây là một loại ứng dụng tích hợp sẵn. vì vậy tôi cần tìm cách chỉnh sửa các trường này từ ứng dụng chính của mình.

Tôi không muốn thay đổi nguồn đăng ký django.

+0

Bạn có xác định biểu mẫu django tùy chỉnh cho điều này hoặc sử dụng biểu mẫu được tích hợp không? – arulmr

+0

Tôi đang sử dụng [biểu mẫu] được xây dựng sẵn (http://docs.b-list.org/django-registration/0.8/forms.html?highlight=registration%20form#registration.forms.RegistrationFormUniqueEmail) – alix

+0

Có ổn không bạn, để thêm chỗ dành sẵn cho các trường bằng cách sử dụng jQuery? – arulmr

Trả lời

20

Nếu bạn có thể ghi đè lên các hình thức xây dựng-in, bạn có thể xác định giữ chỗ như sau:

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

Hoặc nếu không bạn có thể sử dụng jQuery để thêm placeholder đến các lĩnh vực bằng cách sử dụng các trường tương ứng của id như đưa ra dưới đây :

<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> 

Bạn có thể sử dụng firebug để tìm số id của trường.

+0

cảm ơn bạn. nó đã làm việc. – alix

+0

Vui lòng trợ giúp :) – arulmr

+0

Bạn có thể chỉnh sửa câu trả lời để thêm "cách ghi đè biểu mẫu được tích hợp" không? Ví dụ tôi đã tạo một thư mục "tài khoản", tôi đã tạo ra một mô-đun có tên là "forms.py" nhưng cái này nên được gọi từ urls.py phải không? – realnot

11

Tôi thực sự sẽ tạo bộ lọc thẻ mẫu để sửa đổi trường.

@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

Cách tiếp cận khác, hoạt động cho django.contrib.auth.AuthenticationForm (và tôi cho rằng cũng nên làm việc này) trong khi hiển thị chế độ xem. Bằng cách đó bạn không cần phải nhúng nó trong lớp biểu mẫu của bạn và không cần phải ép buộc 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)) 
Các vấn đề liên quan