и еще, вы делаете лишнию проверку во views, зачем нам регулярные выражения в urls?!urls.py
urlpatterns = patterns('',
url(r'lesson/(?P\d+)/$', lesson_view, name = "lesson_view"),
)
views.py
...
from django.shortcuts import get_object_or_404
...
def lesson_view(request, id):
lesson = get_objects_or_404(Lessons, id = id)
return render_to_response( 'lesson_view.html' ,{ 'lesson' : lesson})
в итоге, регулярное выражение пропускает только цифры, а функция get_objects_or_404 возращаеи обьект или вызывает ошибку 404.