我正在为我的项目使用django注册。在registration_form.html文件中:
{{form.username}}
{{form.email}}
//other fields我想为每个字段设置占位符。但这是一种内置的应用程序。所以我需要找到在我的主应用程序中编辑这些字段的方法。
我不想更改django注册的源码。
发布于 2012-11-23 14:49:04
如果可以覆盖内置表单,则可以按如下方式定义占位符:
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>您可以使用firebug查找字段的id。
发布于 2013-09-06 08:47:21
我实际上会创建一个修改字段的模板标记过滤器。
@register.filter
def html_placeholder(field, args=None):
if args == None:
return field
field.field.widget.attrs.update({ "placeholder": args })
return field发布于 2015-02-07 04:36:43
另一种适用于django.contrib.auth.AuthenticationForm的方法(我假设也适用于您的情况)是在呈现视图时注入此信息。这样,您就不需要将其嵌入到form类中,也不需要强制执行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))https://stackoverflow.com/questions/13523286
复制相似问题