Django-debug-toolbar: рдЧрд▓рдд рдЖрдИрдкреА рдЬрдм рдбреЛрдХрд░ рдореЗрдВ рдХрдИ рдиреЗрдЯрд╡рд░реНрдХ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 13 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jazzband/django-debug-toolbar

рдЬрдм Django рдХрдВрдЯреЗрдирд░ рдбреЙрдХрд░ рдореЗрдВ рдХрдИ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреБрдХреАрдХрдЯрд░-рдбреАрдЬреЗрдВрдЧреЛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ SO рдкреЛрд╕реНрдЯ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛):

import socket

ip = socket.gethostbyname(socket.gethostname())
INTERNAL_IPS = ['127.0.0.1', ip[:-1] + '1']

рдорд╛рдИ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЗрдЯрдо рд╣реИрдВ:

networks:
  web_network: {}
  cache_network: {}
  database_network: {}


services:
  djangoapp:
    networks:
      - database_network
      - web_network
      - cache_network

рдЕрдм ip = socket.gethostbyname(socket.gethostname()) рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ IP рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрд▓рдмреНрдз рдиреЗрдЯрд╡рд░реНрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЖрдИрдкреА рд╣реИ (рдпрджрд┐ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ)ред рддреЛ рдХрднреА-рдХрднреА рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдореИрдВрдиреЗ socket рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдПрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЖрдИрдкреА рдЬреЛрдбрд╝рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛, рдЬреИрд╕реЗ рдХреБрдЫ:

def internal_docker_ips(base_ip):
    numbers = base_ip.split('.')
    return [
        '.'.join([numbers[0], str(i), numbers[2], str(j)])
        for i in range(1, 254) for j in (1, 3)  # all IPs ending with '.1' and '.3'
    ]

INTERNAL_IPS = [
    '127.0.0.1',
]

INTERNAL_IPS.extend(
    internal_docker_ips(
        socket.gethostbyname(
            socket.gethostname())))

# ['127.0.0.1', '172.1.0.1', '172.1.0.3', '172.2.0.1', '172.2.0.3', ..., '172.253.0.1', '172.253.0.3']

рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреНрд▓реАрдирд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рднреА рдпрд╣реА рдореБрджреНрджрд╛ рдерд╛? рдпрд╣ Django рдбреАрдмрдЧ рдЯреВрд▓рдмрд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдХреНрдпрд╛ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдпрд╣ рдХрд░рддрд╛ рд╣реВрдВ:

if DEBUG:
    # `debug` is only True in templates if the vistor IP is in INTERNAL_IPS.
    INTERNAL_IPS = type(str('c'), (), {'__contains__': lambda *a: True})()

рдмрд╕ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЪреАрдЬреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ INTERNAL_IPS ред рдмреЗрд╢рдХ рдкреНрд░реЛрдбрдХреНрд╢рди рд╣реЛрд╕реНрдЯ рдкрд░ рдРрд╕рд╛ рдХрднреА рди рдХрд░реЗрдВ!

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдпрд╣ рдХрд░рддрд╛ рд╣реВрдВ:

if DEBUG:
    # `debug` is only True in templates if the vistor IP is in INTERNAL_IPS.
    INTERNAL_IPS = type(str('c'), (), {'__contains__': lambda *a: True})()

рдмрд╕ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЪреАрдЬреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ INTERNAL_IPS ред рдмреЗрд╢рдХ рдкреНрд░реЛрдбрдХреНрд╢рди рд╣реЛрд╕реНрдЯ рдкрд░ рдРрд╕рд╛ рдХрднреА рди рдХрд░реЗрдВ!

рдЪрд╛рд▓рд╛рдХ! рдЖрдкрдХреЛ рдЗрд╕ рдЙрддреНрддрд░ рдХреЛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд SO рдкреЛрд╕реНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП! рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдКрдкрд░ рдЙрдард╛рдКрдВрдЧрд╛: рдореБрд╕реНрдХрд╛рди:

рдореИрдВрдиреЗ рдЗрд╕реЗ рдпрд╣рд╛рдБ рдЬреЛрдбрд╝рд╛ рд╣реИ :) https://stackoverflow.com/a/49818040/317346

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдФрд░ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдореЗрд░рд╛ рдЬрд╡рд╛рдм рдорд┐рд▓ рдЧрдпрд╛: рдмрдВрдж рдХрд░рдирд╛: рдереЛрдбрд╝рд╛_рд╕реНрдорд╛рдЗрд▓рд┐рдВрдЧ_рдлреЗрд╕:

рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ django-debug-toolbar SHOW_TOOLBAR_CALLBACK рдирд╛рдордХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

DEBUG_TOOLBAR_CONFIG = {
    'SHOW_TOOLBAR_CALLBACK': lambda request: True,
}

# or

DEBUG_TOOLBAR_CONFIG = {
    'SHOW_TOOLBAR_CALLBACK': lambda request: True if DEBUG else False,
}
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Atala picture Atala  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

arnaudblois picture arnaudblois  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

FlipperPA picture FlipperPA  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mwoodward-atd picture mwoodward-atd  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pstreck picture pstreck  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ