Can you post your view and template code? Without seeing either of those, I assume either your template needs to display the errors or your view is not handling the form, though I haven't used Django Crispy Forms.
{{ form.non_field_errors }}
{{ form.username.errors }}
FYI, the preferred way to handle error checking is to create a clean function for each field and have it raise a ValidationError when there is a problem. This will then be a field error (second line above).
def clean_password(self):
data = self.cleaned_data.get('password')
if not data:
raise ValidationError(_("Please enter a password"))
Also, since you're just checking that a field is there, so you could set required=True
for each required field and skip the manual validation.
class LoginForm(forms.Form):
username = forms.CharField(label=('UserName'), required=True,
widget = forms.TextInput(attrs={'placeholder': _('Username')})
)
password = forms.CharField(label=('Password'), required=True,
widget=forms.PasswordInput(attrs={'placeholder' : _('Password') }),
)
See the documentation for more info: https://docs.djangoproject.com/en/dev/topics/forms/#customizing-the-form-template