Not yet available
admin.site.urls have been provided with a login endpoint only very recently which explains the 404 you've experienced : django does not try to resolve it until you've successfully logged in.
Workaround
One first solution would be to create the endpoint, prepending your url.py with a new url(r'^admin/login/', admin.site.login, name='login'),
route.
But that's not enough, the very same changeset referenced earlier introduces the use of a redirection parameter. Before that, it's forced to request.get_full_path()
in the login view of admin. Therefore, it will not redirect, but loop on the login page.
Workaround 2 - contrib.auth
The trick to make it all work would be to bypass admin and use auth's login view directly, borrowing only admin's template.
from django.contrib import auth
#...
url(r'^admin/login/', auth.views.login, kwargs={"template_name":"admin/login.html"}, name='login'),
With this route, you should get what you want.