Когда я запускаю сервер с моим собственным 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.

Вернуться на верх