django вывод формы и показ ошибок на одной странице, обработка на другой
мне нужно чтобы форма показывалась на /administrator/ а обрабатывалась на /administrator/add_curator/.
и чтобы с /administrator/add_curator/ данные перешли в контекст /administrator/ например ошибки, логин, почта и тд
ВОТ КОД:
administrator.html:
{% extends 'wrapper.html' %}
{% block content %}
{% load static %}
<link rel="stylesheet" href="{% static 'administrator.css' %}">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<div id="titleAdministrator" align="center">Админ панель</div><hr color="#666666" style="margin-bottom: 20px;">
<!--Навигация-->
<div id="selectActionForm" align="right">
<div id="navigration" align="right">Навигация</div>
<form action="" method="post">
{% csrf_token %}
<select name="select" id="id_select" style="cursor: pointer;">
<option value="0" selected="selected" hidden="hidden">Выбирите действие</option>
<option value="1">Добавить куратора</option>
<option value="2">Добавить школу</option>
<option value="3">Открыть сезон тестирования</option>
<option value="4">Добавить тест</option>
<option value="5">Посмотреть статистику</option>
</select>
<input type="submit" value="Выбрать" style="color:black; cursor: pointer;" id="id_button_choose" name="button_choose">
</form>
<script>
$("#id_select").val({{current}});
</script>
<div style="cursor: default;font-size: 0.9vw">
{% if current == "0" %}
Выберите действие которое хотите осуществить
{% elif current == "1" %}
Добавление нового куратора
{% elif current == "2" %}
Добавление новой школы
{% elif current == "3" %}
Открытие сезона тестирования
{% elif current == "4" %}
Добавление теста
{% elif current == "5" %}
Просмотр статистики
{% endif %}
</div>
</div>
<!--Контент. МНЕ НУЖНА ВОТ ЭТУ ФОРМУ НА ДРУГОЙ СТРАНИЦЕ ОБРАБОТАТЬ-->
{% if current == "0" %}
<div style="font-size: 2.8vw; color:red;cursor: default;" align="center">Не выбрано действие!</div>
{% elif current == "1" %}
<form action="add_curator/" method="post">
{% csrf_token %}
<div style="font-size: 2.5em; color:#A5A5A5">Добавление куратора</div><br>
<label for="id_name">Имя: </label>
<input type="text" id="id_name" name="name" maxlength="30"><br><br>
<label for="id_surname">Фамилия: </label>
<input type="text" id="id_surname" name="surname" maxlength="50"><br><br>
<label for="id_age">Возраст: </label>
<input type="text" id="id_ageCurator" name="age" maxlength="3"><br><br>
<label for="id_email">Почта: </label>
<input type="text" id="id_email" name="email" maxlength="100"><br><br>
<input type="submit" value="Зарегистрировать" name="addCuratorButton">
</form>
{% elif current == "2" %}
Добавление новой школы
{% elif current == "3" %}
Открытие сезона тестирования
{% elif current == "4" %}
Добавление теста
{% elif current == "5" %}
Просмотр статистики
{% endif %}
{% endblock %}
urls.py:
from django.urls import path
from . import views
urlpatterns = [
path('', views.administrator, name='administrator'),
path('add_curator/', views.add_curator, name="add_curator")
]
views.py:
from django.shortcuts import render,redirect
from index.global_context import isAuth
from .forms import *
def administrator(request):
user = isAuth(request.session.get('email',None), request.session.get('password', None))
current = "0"
if user and user.role=="Admin":
if request.POST:
#форма навигации
if 'button_choose' in request.POST: #доп. проверка на какую кнопку нажали(лишним не будет)
form = SelectAction(request.POST)
current = request.POST.get('select')
else:
form = SelectAction()
return render(request, 'administrator.html', {'form':form, 'current':current})
else:
return redirect('/')
def add_curator(request):
user = isAuth(request.session.get('email',None), request.session.get('password', None))
if user and user.role=="Admin":
if request.POST:
if 'addCuratorButton' in request.POST:
name = request.POST['name']
surname = request.POST['surname']
age = request.POST['age']
email = request.POST['email']
#ЧТО МНЕ ТУТ НАДО СДЕЛАТЬ ЧТОБЫ ПЕРЕДАТЬ ЭТИ ДАННЫЕ В КОНТЕКСТ /administrator/
else:
#если админ сам зашел сюда, то мы его выкидываем
return redirect('/')
else:
#если это не админ, а пользователь
return redirect('/')