Сохранить или просмотреть форму (используя систему шаблонов Django) - PullRequest
0 голосов
/ 27 октября 2011

У меня есть форма, которую нужно отправить двумя способами.Если пользователь нажимает кнопку «Добавить», он сохраняется в базе данных, а если пользователь нажимает кнопку «Просмотр», форма сохраняется в сеансе, так что это просто просмотр.Оба процесса являются синхронными, страницы перезагружаются при каждом нажатии кнопки отправки.

Как отправить форму по двум разным адресам или как добавить переменную request.POST, чтобы указать логику в бэкэнде?Возможно ли это с помощью html, шаблонной системы django или javascript?

<table>    
    <form class="add-cv" method="POST" action="{% url add_cv %}">
    {% csrf_token %}
    <!--A lot of form fields-->
    <tr>
        <td>            
            <input type="submit" value="{% trans "Add" %}">
            <input type="submit" value="{% trans "View" %}">
        </td>        
    </tr>
    </form>
</table>

Ответы [ 2 ]

1 голос
/ 27 октября 2011

Это возможно, используя как javascript, так и вашу функцию просмотра django.

Чтобы отправить запрос на объявление функции просмотра, а затем выполнить соответствующее действие, измените свою HTML-форму следующим образом:

<table>    
<form class="add-cv" method="POST" action="{% url add_cv %}">
{% csrf_token %}
<!--A lot of form fields-->
<tr>
    <td>            
        <input type="submit" name="submit_Add" value="{% trans "Add" %}">
        <input type="submit" name="submit_View" value="{% trans "View" %}">
    </td>        
</tr>
</form>
</table>

Это гарантирует, что вы можете найти 'submit_Add' или 'submit_Value' в ключах запроса. Словарь POST отправлять в представление, в зависимости от того, какая кнопка отправки была нажата.Вы можете различать это в своих представлениях следующим образом:

def YourView(request):
  if "submit_Add" in request.POST:
       # Actions to add the values in the database.
  elif "submit_View" in request.POST:
       # Actions to save the values in the session.

Или вы можете использовать javascript для различения кнопок. (Но это был бы метод кругового обзора, и его следует использовать, только если вы абсолютно не можете перезагрузить страницу.) Чтобы использовать javascript, измените ваш HTML-код следующим образом:

<table>    
<form class="add-cv" method="POST" action="{% url add_cv %}">
{% csrf_token %}
<!--A lot of form fields-->
<tr>
    <td>            
        <input type="button" onclick="func_Add();" value="{% trans "Add" %}">
        <input type="button" onclick="func_View();" value="{% trans "View" %}">
    </td>        
</tr>
</form>
</table>

Определите две функции в вашем шаблоне.

<script type="text/javascript">
  function func_Add(){
     //Required 'Add' actions.
   }

  function func_View(){
     //Required 'View' actions.
   }
</script>
1 голос
/ 27 октября 2011

добавьте атрибут имени к отправке name="submit1" и name="submit2", а затем вы можете различить их в своем представлении add_ cv :

if "submit1" in request.POST:
    do something
elif "submit2" in request.POST:
    do something
...