Можно создать мидлвар и там проверять есть ли доступ с IP к определенному урлу. Уверен на 90%, что можно нагуглить какой-то готовый код. Точно видел мидлвар, который проверяет авторизацию, чтобы не писать всюду @login_required. Вот аналогично проверяете IP.
middleware.py:
from django.conf import settings
from django import http
class SuperUserIpRestrictMiddleware(object):
"""
Разрешает доступ суперпользователям только с определенных ip
список разрешенных ip = settings.SUPERUSER_ALLOWED_IP
"""
def process_request(self, request):
if (request.user.is_superuser and request.path != u'/logout/' and
request.META['REMOTE_ADDR'] not in
settings.SUPERUSER_ALLOWED_IP):
html_str = u'''
<h1>Доступ запрещен</h1>Вход с ip {ip} для
пользователя <b>{user}</b> запрещен.</br>
<a href="/logout/">Вернуться</a>
'''.format(ip=request.META['REMOTE_ADDR'], user=request.user)
return http.HttpResponseForbidden(html_str)
return None
вернулся к вопросу. накидал мидлварь. работает...
сейчас вот подумал, что красивее будет реализовать через кастомный AuthenticationForm и об ошибке оповещать с помощью ValidationError.
может у кого есть код готовый для примера? а то я с наскока запутался.