Когда я запускаю сервер с моим собственным IP, почему сессии Django не работают?
Это приложение развернуто на сервере локальной сети.
Моя сессия может работать с localhost ( python manage.py runserver 8000 ), но я хочу использовать свой собственный IP ( python manage.py runserver < my-IP >:< port > ), тогда сессия не работает
def login(request):
url_page ="pages/login.html"
id = request.session.get('id')
if id is not None:
return redirect("homepage")
if request.method == 'POST':
id = request.POST.get('id',"")
password = request.POST.get('password',"")
data={
"id":id,
"password":password
}
user = QueryUsers.users_get(data)
if bool(user):
request.session['user'] = id # not working
request.session.modified = True
return redirect("homepage")
else:
res ={
"error":True,
"message":error_message.INVALID_LOGIN
}
return render(request,url_page,res)
CUS_PARAMS = {
"id": "",
"name": "",
"error": False,
"message": "",
}
return render(request,url_page,CUS_PARAMS)
мои настройки
ALLOWED_HOSTS = ['*']
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Мой request.session.get('user') равен null, когда я запускаю сервер с моим собственным IP, я очень уверен, что моя функция входа не имеет ошибки, потому что когда я запускаю сервер с localhost python manage.py runserver 8000
, Он способен работать в local.
Я пробовал добавить SESSION_SAVE_EVERY_REQUEST
в setting.py
, это не работает.
Я хочу решить эту проблему, потому что я хочу открыть это приложение на другом устройстве, которое подключено к той же сети.
вместо этого:
ALLOWED_HOSTS = ['*']
Попробуйте этот способ:
ALLOWED_HOSTS = ['localhost','your_ip']
И посмотрите, загружает ли это ваш проект, используя ip.