Проблемы, повышающие ValidationError на Форме Django

Это всего лишь предположения, но мне кажется, что учетная запись службы на самом деле является не реальной учетной записью пользователя, а учетной записью компьютера. Так что на самом деле он не идентифицирует пользователя, а компьютер. И из того, что ты пишешь, кажется, что важно только местоположение.

Я думаю, что продление грантов может быть ответом в вашем случае. Потому что вы можете создать свой собственный логин для машины / пользователя. Объединение информации в одном токене доступа.

Альтернативой может быть просмотр IP-адреса. Но это работает только тогда, когда компьютер имеет фиксированный и известный IP-адрес.

Оба варианта привязывают пользователя к местоположению.

Разрешения не должны быть частью настройки, чтобы поддерживать маленький токен доступа, хотя IdentityServer имеет структуру для этого. Вместо этого вы можете захотеть взглянуть на сервер авторизации (например, PolicyServer ), который обрабатывает разрешения. В этом случае вы можете использовать имя пользователя Windows компьютера (если проверено и является частью токена) или IP-адрес, а также идентификатор пользователя, чтобы получить разрешения для пользователя для этого расположения.

5
задан saturdayplace 4 December 2008 в 01:51
поделиться

3 ответа

канал django в IRC сохранил меня здесь. Проблема состояла в том, что URLField.clean () делает две вещи, которые я не ожидал:

  1. Если никакая схема URL не присутствует (например, http://), метод предварительно ожидает 'http://' к URL
  2. метод также добавляет запаздывающую наклонную черту.

Результаты возвращаются и хранятся в cleaned_data формы. Таким образом, я проверял cleaned_data['url'] ожидание чего-то как example.com и на самом деле получение http://example.com/. Будьте достаточны для высказывания, изменив мой clean_url() метод к следующим работам:

def clean_url(self):
        url = self.cleaned_data['url']        
        bits = urlparse(url)
        dom = bits[1]
        try:
            site=Site.objects.get(domain__iexact=dom)
        except Site.DoesNotExist:
            return dom
        raise forms.ValidationError(u'That domain is already taken.  Please choose another')
4
ответ дан 14 December 2019 в 19:29
поделиться

Я думаю, можно возвратиться '' и заполнить _errors.

msg = u"That URL is already in the database.  Please submit a unique URL."
self._errors["url"]=ErrorList([msg])
return ''

или

from django.contrib.sites.models import Site
class SignUpForm(forms.Form):
    # ... Other fields ...

url = forms.URLField(label='URL for new site, eg: example.com')

def clean_url(self):
    url = self.cleaned_data['url']
    try:
        a = Site.objects.get(domain=url)
        raise forms.ValidationError("That URL is already in the database.  Please submit a unique URL.")
    except Site.DoesNotExist:
        return url
    return ''

def clean(self):
    # Other form cleaning stuff.  I don't *think* this is causing the grief
0
ответ дан 14 December 2019 в 19:29
поделиться

Я делаю это этот путь. Это немного более просто.

try:
    a = Site.objects.get(domain=url)
    raise forms.ValidationError("That URL is already in the database.  Please submit a unique URL.")
except Site.DoesNotExist:
    pass
return url
1
ответ дан 14 December 2019 в 19:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: