Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как реализовать обовление поля формы по нажатии на кнопку? [RSS Feed]

#1 Ноя. 12, 2015 10:44:42

kaldown
Зарегистрирован: 2015-07-16
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Как реализовать обовление поля формы по нажатии на кнопку?

Доброго времени суток господа.
Возникла такая проблема. я и я в затыке.

Собственно нужно реализовать функционал изменения поля email по нажатии на кнопку.
Сначало я отправлял email как отдельный жлемент словаря в контексте

def get_context_data(self, **kwargs):
        context = super(UserUpdate, self).get_context_data(**kwargs)
        context['mod_availiable'] = False
        context['email'] = self.object.email
        return context
    def post(self, request, *args, **kwargs):
        self.object = self.get_object()       
        
        if "change_email" in request.POST:
            form = self.get_form()
            self.mod_availiable = True
            return render(request, self.template_name, {'form': form,'mod_availiable': self.mod_availiable})
        elif "email_to_change" in request.POST:
            self.object.email = request.POST.get('email_to_change')
            self.object.save()
            print self.get_form_kwargs()
            return redirect ('edit-profile')
        return super(UserUpdate, self).post(request, *args, **kwargs)
{{ form.as_p }}
  {% if mod_availiable == True %}
    <label>Email:</label> 
    <input type="text" value="{{ email }}" name="email_to_change"/>
  {% else %}
    <label>Email:</label> 
    {{ email }}
    <input type="submit" value="Change Email" name="change_email"/>
    <input type="submit" value="Check" name="email_verify"/>
  {% endif %}
  <br>
  <input type="submit" value="Update" name="profile_update"/>
</form>
Но в такой фигне не понимаю как валидировать email.

Если же добавить email в список формы fields, то додумался только до подобной лапши:

{% for f in form %}
  {% if f.name == 'email'%}
    {% if mod_availiable == True %}
      {{ f }}
    {% else %}
      {{ f.value }} 
      <input type="submit" value="Check" name="email_verify"/>
      <input type="submit" value="Change Email" name="change_email"/>
      
      {% endif %}
    {% else %}
        {{ f }}
      {% endif %}
      <br>
{% endfor %}
Но при атком раскладе email отправляется в форму только если нажать на change_email. И снова затуп.
Как можно реализовать такую штуку, чтоб была возможность показывать ошибки при вводе, лейблы и тд, чтоб все как у людей, но изменять емейл только после нажатия на кнопку?

Спасибо.

Офлайн

#2 Ноя. 12, 2015 11:16:58

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как реализовать обовление поля формы по нажатии на кнопку?

Открывайте уже для себя AJAX,
сайты типа “Нажал сабмит - перезагрузил страницу” уже давно никому не нужны.



Офлайн

  • Начало
  • » Django
  • » Как реализовать обовление поля формы по нажатии на кнопку?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version