Почему в моем размещенном приложении Django в URL отображается мое имя пользователя? - PullRequest
0 голосов
/ 30 января 2019

Я написал приложение Django, которое я пытаюсь настроить на общем веб-хостинге (A2).Он работает, за исключением того, что когда я перехожу к:

http://example.com/terms/

, URL-адрес в строке браузера изменяется на:

http://example.com/home/myusername/myappfolder/myappname/terms/ 

, показывая полный путь к моему приложению на диске.

Этого не происходит со статическими файлами - например, http://example.com.com/static/image.png работает нормально.

Приложение работает в виртуальной среде.Я использую Python 3.6.8 и Django 2.1.4.

Я следовал этим инструкциям , чтобы настроить мое приложение, включая настройку этого файла passenger.wsgi, который выглядит следующим образом:

import myapp.wsgi
SCRIPT_NAME = '/home/username/myapp'

class PassengerPathInfoFix(object):
    """
    Sets PATH_INFO from REQUEST_URI because Passenger doesn't provide it.
    """
    def __init__(self, app):
        self.app = app

    def __call__(self, environ, start_response):
        from urllib.parse import unquote
        environ['SCRIPT_NAME'] = SCRIPT_NAME

        request_uri = unquote(environ['REQUEST_URI'])
        script_name = unquote(environ.get('SCRIPT_NAME', ''))
        offset = request_uri.startswith(script_name) and len(environ['SCRIPT_NAME']) or 0
        environ['PATH_INFO'] = request_uri[offset:].split('?', 1)[0]
        return self.app(environ, start_response)

application = myapp.wsgi.application
application = PassengerPathInfoFix(application)

Я быблагодарен за любые указания относительно того, где искать, чтобы решить это.

1 Ответ

0 голосов
/ 01 февраля 2019

Работает!

В моем модифицированном passenger_wsgi.py я изменил строку SCRIPT_NAME = os.getcwd() на SCRIPT_NAME = ''

Одна вещь, на которую я должен обратить внимание, это то, что получался абсолютный путьвставлен на перенаправлениях - поэтому, если я посетил http://example.com/terms, он перенаправил бы на http://example.com/terms/ и вставил бы путь в URL.

Поскольку вы отлаживаете, я рекомендую отключить кеш, поскольку это приводит к нескольким цикламкогда внесенные мной изменения, похоже, не вступили в силу.

Спасибо за этот вопрос за то, что я выбрал правильный путь.

...