Прежде всего, ваш HTML-фрагмент не очень хорош. Просто вы не можете присвоить class
значение validate[required,custom[noSpecialCaracters],length[0,20],ajax[ajaxUser]]
, потому что это нарушает стандарты w3c.
Во-вторых, вы не можете просто использовать одну и ту же систему проверки, потому что здесь Django и Python, и это означает, что система совершенно другая, процесс проверки намного лучше, чем у предоставленного вами чистого php. Так что я предлагаю вам подумать о другом способе делать то, что вы хотите, особенно длинное значение, которое вы присваиваете в class
(!), Который, кажется, не является допустимым классом css. Я предлагаю вам использовать hidden
поля вместо.
Хотя вот для вас отправная точка:
Шаблон HTML, index.html
{% if form.errors %}
<div class="alert alert-error">
{{ form.errors }}
</div>
{% endif %}
<form id="simpleform" method="post" action="/done/">
<label for="{{ form.username.name }}">{{ form.username.label }}</label>
{{ form.username }}
{% csrf_token %}
<button id="submit" class="submit" type="submit">Validate</button>
</form>
forms.py . Просто создайте этот файл в папке вашего приложения
from django import forms
class SimpleForm(forms.Form):
username = forms.CharField(label="Username:", max_length=30, widget=forms.TextInput(attrs={'id':'username', 'class':'css-class-name', 'data-validation':'validate[required,custom[noSpecialCaracters],length[0,20],ajax[ajaxUser]]'}))
views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.utils import simplejson
from django.views.decorators.csrf import csrf_exempt
from .forms import SimpleForm
@csrf_exempt
def validate(request):
if request.is_ajax():
form = SimpleForm(request.POST)
if form.is_valid():
#Do something when the form is valid...
response_data = { 'username':form.cleaned_data['username'] }
return HttpResponse(simplejson.dumps(response_data), mimetype="application/json")
else:
form = SimpleForm()
template = {
'form':form
}
return render(request, 'index.html', template)
Ваш urls.py должен выглядеть следующим образом. имя папки, в которой находится views.py .
from django.conf.urls.defaults import patterns, url
urlpatterns = patterns('',
url(r'^done/$', 'appname.views.validate', name='validate'),
)
В вашем коде JQuery вы должны обработать атрибут data-validation
с помощью метода data JQuery.
Для обработки AJAX проверьте метод .ajax в JQuery. Вот краткий пример:
$.ajax({
type: 'POST',
url: '/done/',
data: {username: get_username_here},
dataType: 'json',
beforeSend: function(jqXHR, settings) {
//Do something before send...
},
success: function(data, textStatus, jqXHR) {
alert('Ajax success: ' + data.username);
},
error: function(jqXHR, textStatus, errorThrown) {
alert(textStatus + '. ' + errorThrown);
}
});