def contain_photos(model):
upload_path = model.__name__.lower() + 's'
image_field = models.ImageField(upload_to=upload_path)
setattr(model, 'photo', image_field)
return model
payload_class: Type[ServicePayload] = ServicePayload
payload_class: ServicePayload = ServicePayload()
items: List[str]
items: List[Union[str, int]]
T = TypeVar('T')
def enum(iterable: Iterable[T]) -> Tuple[int, T]:
...
login = models.CharField(max_length=100, verbose_name="Логин", blank=False, default="NULL")
class AuthForm(forms.ModelForm):
def __init__(*args, **kwargs):
self.user = None
super().__init__(*args, **kwargs)
def clean():
cleaned_data = super().clean()
self.user = authenticate(cleaned_data['login'], cleaned_data['password'])
if not self.user:
self.add_error('password', 'Password is incorrect')
return cleaned_data
class Meta:
model = get_user_model()
fields = ('login', 'password')
def auth(request):
form = AuthForm(request.POST or None)
if form.is_valid():
login(request, form.user)
return redirect('...')
return render(request, 'template.html', {'form': form, ...})
при создании авторизации отказался от велосипеда LoginView
(благо, он не делает invert, который еще и пц ест нормально)
а если по делу - я бы проследил, что опера добавляет на страницу и попробовал отследить, например, при загрузке (тот же dark reader добавляет в head несколько тегов style, которые легко находятся)