Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 6, 2008 23:57:51

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

контроль над выводом полей формы

Hi.

Хотел бы убедиться в правильности (или наоборот) следующего:

Для вывода формы и контроля вывода последовательности ее полей
1) для “неконтролируемого” порядка (то есть он контролируется на уровне forms.py) и уменьшения количества кода в темплейте применяем
{{ form.as_p }} имеем компактный код темплейта , но монолит

2) При микшировании форм мы теряем контроль над выводом порядка полей. в случаии использования {{ form.as_p }} То есть например : при использовании ModelForm и дополнительных полей как в сл. коде:

class AddForm(forms.ModelForm):
class Meta:
model = MyModel
password1 = forms.CharField()
password2 = forms.CharField()
то если нужно вставить поле password1 в позицию между позицией полями описанными MyModel то в этом случаии правильно в шаблоне прописывать каждое поле. То есть получаем гранулярность теряем компактность.
3) Возможно ли как то применять сигнальную систему джанги в подобных случаях или оптимальнее п.2


Спасибо

Отредактировано (Дек. 6, 2008 23:58:44)

Офлайн

#2 Дек. 7, 2008 00:13:48

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

контроль над выводом полей формы

romankrv
1) для “неконтролируемого” порядка
порядок контролируем - он соотвествует порядку декларации полей
romankrv
2) При микшировании форм мы теряем контроль над выводом порядка полей. в случаии использования {{ form.as_p }}
нет. всегда можно поменять
romankrv
3) Возможно ли как то применять сигнальную систему джанги в подобных случаях или оптимальнее п.2
каких случаях? какая “сигнальная система”?

В чем вопрос?



Офлайн

#3 Дек. 7, 2008 18:12:47

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

контроль над выводом полей формы

Daevaorn
нет. всегда можно поменять
Хорошо. Это можно поменять в случаи что все мои модели - мои, а если я наследуюся от встроенных моделей например django.contrib.auth.models.User
например код:
class UserProfile(User):
middle_name = models.CharField(max_length=100)

class UserAddForm(forms.ModelForm):
password1 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict,), label=_(u'пароль'))
password2 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict,), label=_(u'пароль (повтор)'))
class Meta:
model = UserProfile
exclude = ('last_login', 'user_permissions','date_joined', 'is_staff', 'is_active', 'is_superuser', 'groups', 'password', )
то при использовании в шаблоне
:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
<head>
</head>
<body>
{{ form.as_p }}
</body>
</html>
где {{ form }} экземпляр класса UserAddForm.
То в этом случаии будет сначала выводится все что относится к UserProfile а затем поля password1 password2. То есть например я хочу что бы поля password1 password2 следовали после поля определенного в User это поле username.
То есть в этом случаии уже нельзя использовать {{ form.as_p }} только {{ form.username}} {{ form.password1 }} и так далее . Тоесть нужно перечислять в порядке в каком я хочу выводить поля формы. Но я также и теряю при таком перечислении все определения что были заданы в классе формы (например уже не выводится label поля итд )
Как действовать в подобных случаях? то есть как задавать порядок вывода полей класса а не в шаблоне?
И второе правильно ли изменять порядок расположения полей во встроенных классах Джанги таких как User?

Спасибо

Офлайн

#4 Дек. 7, 2008 19:40:37

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

контроль над выводом полей формы

Ром, слишком много слов и мало толку. Ведь не мы у тебя что-то спрашиваешь, а ты. Так зачем вещи, которые и так все знают, перепечатывать?:-)
Ты хочешь порядок полей изменить у формы? Ну тогда поменяй его у UserAddForm.fields. В чем проблема то?

romankrv
Но я также и теряю при таком перечислении все определения что были заданы в классе формы (например уже не выводится label поля итд )
Что значит теряешь? Если ты их не выводишь, это не значит что они теряются. Ты их так же можешь все выводить. И лейбл и хелп текст и всё прочее.
romankrv
И второе правильно ли изменять порядок расположения полей во встроенных классах Джанги таких как User?
Мягко говоря, это не нужно.



Офлайн

#5 Дек. 7, 2008 22:12:20

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

контроль над выводом полей формы

Порядок расположения полей в классах менять нет необходимости.
Если нужно - меняйте порядок вывода в шаблонах.

Офлайн

#6 Дек. 8, 2008 11:33:27

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

контроль над выводом полей формы

Daevaorn
Ты их так же можешь все выводить. И лейбл и хелп текст и всё прочее.
Я имею ввиду что если в шаблоне писать {{ form.as_p }} то label help_text итп что указаны в классе формы - это выводится в клиента. Если же {{ form.имя_поля_класса_формы }} то это не выводится в клиента. Почему?

Офлайн

#7 Дек. 8, 2008 12:10:28

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

контроль над выводом полей формы

Потому что надо попросить это вывести. У филда есть несколько полей, где это всё лежит.



Офлайн

#8 Дек. 8, 2008 13:48:53

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

контроль над выводом полей формы

В джанго тут две крайности - или обобщённый вывод, таблицей или списком или полность задаваемый вручную - через field.свойство.
Хотя вывод

class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
в шаблоне:
{{form.subject}}
как
<label for="id_subject">Subject:</label>
<input id="id_subject" type="text" name="subject" maxlength="100" />
Было бы весьма удобно иногда. Полная кастомизация не так часто нужна.
С другой стороны, сделать такое не должно быть сложно…

Офлайн

#9 Дек. 8, 2008 15:30:35

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

контроль над выводом полей формы

Ferroman
Было бы весьма удобно иногда. Полная кастомизация не так часто нужна.
Вот собственно и почему я затеял этот топик что если я написал один раз в классе формы нужные мне фичи то зачем же снова повторятся при наборе темплейта.
Вообщем я понял что вопрос в джанге по этому поводу не закрыт и может быть финкциональность улучшена. Будем надеется.
Спасибо всем за разъяснение этого вопроса. Буду знать что здесь есть две крайности

Отредактировано (Дек. 8, 2008 15:31:21)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version