2009-03-13 2 views
21

В Django/Pinax, я пришел через форму входа, которая начинается так:HTML-формы без действий

<form class="login" method="POST" action=""> 

Он работает отлично. Поэтому я предполагаю, что какой-либо java-скрипт или что-то в структуре Django помещает значение в атрибут action.
Итак, мои вопросы:

  • Как Django вставить действие?
  • Почему они так делают?
  • Как я могу узнать, что такое действие этой формы?

Обновление: Я вижу, что это вообще не вещь Django, но что делает большинство браузеров.

ответ

29

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

+0

ах 'Спасибо'. Я этого не знал. Так что это просто лень или это хорошая практика, чтобы полагаться на это – interstar

+0

, я бы сказал, хорошая практика, так как вы уменьшаете количество URL-адресов в своем коде. но я предпочитаю вообще не предпринимать никаких действий. нужен ли какой-нибудь браузер для пустого действия? – Javier

+12

Формы без действия attrbiute работают хорошо во всех основных браузерах. Однако атрибут действия является обязательным, если вы хотите, чтобы ваш HTML проверялся. – Imran

2

Также возможно, что javascript, загруженный этой страницей, может устанавливать действие после загрузки страницы в зависимости от того, какое приложение использует эту страницу.

Другой вероятной возможностью является то, что javascript обрабатывает событие onsubmit. Можно было бы сделать это, чтобы предотвратить страницу от перегрузки или перенаправлять на конкретную страницу

5

Для интересного понимания на форм с пустыми действиями чтения this thread, который дает вам обновленный HTML5-перспективу по этому вопросу.

0

Я думаю, что немного поздно ответить на этот пост. В любом случае, я узнаю об этом.

Если «действие» не указано в формах, то Django просматривает HttpResponseRedirect в соответствующем представлении.

Например, в приведенном ниже примере:

if form.is_valid(): # All validation rules pass 
     # Process the data in form.cleaned_data 
     # ... 
     return HttpResponseRedirect('/thanks/') 

После того, форма проверяется (и обрабатывается), страница перенаправляется