Я пытаюсь установить переменнуюvendor_data в своих представлениях для request.session в django.
class MyClass(APIview):
def post(self, request, format=None):
request.session['vendor_data'] = vendor_data # this is a dict
Затем я пытаюсь получить доступ к этому ключуvendor_data в другом представлении DRF, например:
class AnotherClass(APIview):
def post(self, request, format=None):
vendor_data = request.session['vendor_data']
Но я получаю сообщение об ошибке keyError, отсутствует ключ «vendor_data».
Дополнительный контекст:
API работают на EC2 с открытым портом.
API запрашиваются из среды реагирования локального хоста, с ПК.
Мой файл django settings.py разрешает все хосты и
ALLOWED_HOSTS = ['*']
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOWED_ORIGINS = [
'http://localhost:3002', # react app port
'http://127.0.0.1:3002',
'http://10.0.90.2:8008', # dummy django app port
'http://127.0.0.1:8008',
'http://localhost:8008',
]
SESSION_COOKIE_SECURE = False
SESSION_COOKIE_AGE = 300
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_COOKIE_SAMESITE = 'None'
Я пытаюсь зарегистрировать и аутентифицировать пользователя через OTP. Я сохраняю данные пользователя в сеансе до тех пор, пока они не проверят OTP.
Но я не могу проверить OTP из-за ошибки ключа, которую я получаю в другом представлении.
РЕДАКТИРОВАТЬ:
Вот код реакции
try {
console.log("Submitting OTP:", otp);
const response = await axios.post(
"http://IP:8008/api/otp-verification/",
{ otp: String(otp) }, // Make sure OTP is passed as a string
{
headers: {
"Content-Type": "application/json",
// Authorization: `Bearer ${token}`, // Uncomment if using the token
},
withCredentials: true,
}
);
console.log("Response:", response);
if (response.status === 200) {
alert("OTP verified successfully!");
localStorage.removeItem('otp'); // Optionally remove OTP from localStorage
navigate("/Login"); // Redirect to login page after successful OTP verification
}
} catch (error) {
console.error("OTP verification failed:", error.response ? error.response.data : error.message);
// Handle specific error messages based on the response
if (error.response && error.response.data) {
setErrorMessage(error.response.data.message || "Invalid OTP. Please try again.");
} else {
setErrorMessage("An error occurred. Please try again later.");
}
} finally {
// Hide the loading state after the request is finished
setLoading(false);
}
};
Подробнее здесь: https://stackoverflow.com/questions/791 ... e-requests
Как поддерживать сеанс между Джанго и реагировать на несколько запросов? ⇐ Python
Программы на Python
1731732890
Anonymous
Я пытаюсь установить переменнуюvendor_data в своих представлениях для request.session в django.
class MyClass(APIview):
def post(self, request, format=None):
request.session['vendor_data'] = vendor_data # this is a dict
Затем я пытаюсь получить доступ к этому ключуvendor_data в другом представлении DRF, например:
class AnotherClass(APIview):
def post(self, request, format=None):
vendor_data = request.session['vendor_data']
Но я получаю сообщение об ошибке keyError, отсутствует ключ «vendor_data».
Дополнительный контекст:
API работают на EC2 с открытым портом.
API запрашиваются из среды реагирования локального хоста, с ПК.
Мой файл django settings.py разрешает все хосты и
ALLOWED_HOSTS = ['*']
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOWED_ORIGINS = [
'http://localhost:3002', # react app port
'http://127.0.0.1:3002',
'http://10.0.90.2:8008', # dummy django app port
'http://127.0.0.1:8008',
'http://localhost:8008',
]
SESSION_COOKIE_SECURE = False
SESSION_COOKIE_AGE = 300
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_COOKIE_SAMESITE = 'None'
Я пытаюсь зарегистрировать и аутентифицировать пользователя через OTP. Я сохраняю данные пользователя в сеансе до тех пор, пока они не проверят OTP.
Но я не могу проверить OTP из-за ошибки ключа, которую я получаю в другом представлении.
[b]РЕДАКТИРОВАТЬ:[/b]
Вот код реакции
try {
console.log("Submitting OTP:", otp);
const response = await axios.post(
"http://IP:8008/api/otp-verification/",
{ otp: String(otp) }, // Make sure OTP is passed as a string
{
headers: {
"Content-Type": "application/json",
// Authorization: `Bearer ${token}`, // Uncomment if using the token
},
withCredentials: true,
}
);
console.log("Response:", response);
if (response.status === 200) {
alert("OTP verified successfully!");
localStorage.removeItem('otp'); // Optionally remove OTP from localStorage
navigate("/Login"); // Redirect to login page after successful OTP verification
}
} catch (error) {
console.error("OTP verification failed:", error.response ? error.response.data : error.message);
// Handle specific error messages based on the response
if (error.response && error.response.data) {
setErrorMessage(error.response.data.message || "Invalid OTP. Please try again.");
} else {
setErrorMessage("An error occurred. Please try again later.");
}
} finally {
// Hide the loading state after the request is finished
setLoading(false);
}
};
Подробнее здесь: [url]https://stackoverflow.com/questions/79188974/how-to-maintain-session-between-django-and-react-between-multiple-requests[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия