2012-11-02 13 views
9

शायद एक खराब सवाल है, लेकिन मैं Django के UserCreationForm (ईमेल को शामिल करने के लिए थोड़ा संशोधित) का उपयोग कर रहा हूं, और मैं help_text को हटाना चाहता हूं जो Django स्वचालित रूप से HTML पृष्ठ पर प्रदर्शित होता है।Django UserCreateForm से help_text को हटा रहा है

मेरे एचटीएमएल पेज के रजिस्टर हिस्से पर, इसका उपयोगकर्ता नाम, ईमेल, पासवर्ड 1 & पासवर्ड 2 फ़ील्ड है। लेकिन उपयोगकर्ता नाम के नीचे "आवश्यक है। 30 अक्षर या उससे कम। अक्षर, अंक, और @ ... केवल।" और पासवर्ड पुष्टिकरण (पासवर्ड 2) के तहत, यह कहता है "सत्यापन के लिए ऊपर जैसा ही पासवर्ड दर्ज करें।"

मैं इन्हें कैसे हटा सकता हूं?

#models.py 
class UserCreateForm(UserCreationForm): 
    email = forms.EmailField(required=True) 

    def save(self, commit=True): 
     user = super(UserCreateForm, self).save(commit=False) 
     user.email = self.cleaned_data['email'] 
     if commit: 
      user.save() 
     return user 

    class Meta: 
     model = User 
     fields = ("username", "email", "password1", "password2") 
     exclude = ('username.help_text') 

#views.py 
def index(request): 
    r = Movie.objects.all().order_by('-pub_date') 
    form = UserCreateForm() 
    return render_to_response('qanda/index.html', {'latest_movie_list': r, 'form':form},  context_instance = RequestContext(request)) 

#index.html 
<form action = "/home/register/" method = "post" id = "register">{% csrf_token %} 
    <h6> Create an account </h6> 
    {{ form.as_p }} 
    <input type = "submit" value = "Create!"> 
    <input type = "hidden" name = "next" value = "{{ next|escape }}" /> 
</form> 

उत्तर

20

आप में से कोई भी करने के लिए खेतों की help_text सेट कर सकते हैं __init__

from django.contrib.auth.forms import UserCreationForm 
from django import forms 

class UserCreateForm(UserCreationForm): 
    email = forms.EmailField(required=True) 

    def __init__(self, *args, **kwargs): 
     super(UserCreateForm, self).__init__(*args, **kwargs) 

     for fieldname in ['username', 'password1', 'password2']: 
      self.fields[fieldname].help_text = None 

print UserCreateForm() 

उत्पादन:

<tr><th><label for="id_username">Username:</label></th><td><input id="id_username" type="text" name="username" maxlength="30" /></td></tr> 
<tr><th><label for="id_password1">Password:</label></th><td><input type="password" name="password1" id="id_password1" /></td></tr> 
<tr><th><label for="id_password2">Password confirmation:</label></th><td><input type="password" name="password2" id="id_password2" /></td></tr> 
<tr><th><label for="id_email">Email:</label></th><td><input type="text" name="email" id="id_email" /></td></tr> 

आप बहुत अधिक परिवर्तन कर रहे हैं, ऐसे मामलों में यह सिर्फ ओवरराइड करने के लिए बेहतर है खेतों जैसे

class UserCreateForm(UserCreationForm): 
    password2 = forms.CharField(label=_("Whatever"), widget=MyPasswordInput 

लेकिन आपके मामले में मेरा समाधान बहुत अच्छा काम करेगा।

+1

भयानक। सहायता के लिए धन्यवाद! –

2

आप इस तरह पंजीकरण_form.html फ़ाइल में सीएसएस कक्षा जोड़ सकते हैं।

<style> 
 

 
.helptext{ 
 
    visibility: hidden; 
 
} 
 

 
</style>

3

एक और, क्लीनर विकल्प वर्ग मेटा में help_texts शब्दकोश का प्रयोग है। उदाहरण: यहाँ में

class UserCreateForm(UserCreationForm): 
    ... 
    class Meta: 
     model = User 
     fields = ("username", "email", "password1", "password2") 
     help_texts = { 
      'username': None, 
      'email': None, 
     } 

और जानकारी: https://docs.djangoproject.com/en/1.11/topics/forms/modelforms/#overriding-the-default-fields

उपयोगकर्ता नाम और ईमेल के लिए एकदम सही काम करता है, लेकिन password2 के लिए काम नहीं करता। कोई विचार क्यों नहीं।

+0

मेरे लिए एक विदेशी के लिए काम किया। धन्यवाद! – texnic