доберитесь запрашивают данные в форме Django

Взгляните на телефон org.apache.commons.lang.StringUtils#rightPad(String str, int size, char padChar).

, Но алгоритм очень прост (клавиатура прямо до символов размера):

public String pad(String str, int size, char padChar)
{
  StringBuffer padded = new StringBuffer(str);
  while (padded.length() < size)
  {
    padded.append(padChar);
  }
  return padded.toString();
}
49
задан blissini 14 November 2016 в 11:30
поделиться

2 ответа

Как указали ars и Diarmuid, вы можете передать request.user в свою форму и использовать его для проверки электронной почты. Однако код Диармуида неверен. Фактически код должен выглядеть так:

from django import forms

class UserForm(forms.Form):
    email_address = forms.EmailField(widget = forms.TextInput(attrs = {'class':'required'}))

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super(UserForm, self).__init__(*args, **kwargs)

    def clean_email_address(self):
        email = self.cleaned_data.get('email_address')
        if self.user and self.user.email == email:
            return email
        if UserProfile.objects.filter(email=email).count():
            raise forms.ValidationError(u'That email address already exists.')
        return email

Затем, по вашему мнению, вы можете использовать его так:

def someview(request):
    if request.method == 'POST':
        form = UserForm(request.POST, user=request.user)
        if form.is_valid():
            # Do something with the data
            pass
    else:
        form = UserForm(user=request.user)
    # Rest of your view follows

Обратите внимание, что вы должны передать request.POST в качестве аргумента ключевого слова, поскольку ваш конструктор ожидает 'user' в качестве первого позиционного аргумента .

Делая это таким образом, вам нужно передать пользователя в качестве аргумента ключевого слова. Вы можете передать request.POST в качестве позиционного аргумента или аргумент ключевого слова (через data = request.POST ).

67
ответ дан 7 November 2019 в 11:36
поделиться

Насколько мне известно, нет. Один из способов справиться с этим - сделать так, чтобы класс формы __ init __ принимал необязательный параметр электронной почты, который он может сохранить как атрибут. Если предоставляется во время создания формы, он может использовать это во время проверки для интересующего вас сравнения.

0
ответ дан 7 November 2019 в 11:36
поделиться
Другие вопросы по тегам:

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