
рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдХреНрд╕рд░ рдЕрдкрдиреЗ рдЖрдИрдкреА рдкрддреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдХреНрд▓рд╛рд╕рд┐рдХ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдЬреЛ рдХрд┐ рдореИрдХреНрд╕рдорд╛рдЗрдВрдб рдЬрд┐рдпреЛрд▓рд╛рдЗрдЯ рдмреЗрд╕ рдпрд╛ рд░реВрд╕реА рдЗрдкреЛрдЬреЛрдмреЗрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЙрди рд╕рднреА рдХреЗ рдкрд╛рд╕ рдХрд╛рдлреА рдирд┐рдореНрди-рд╕реНрддрд░ рдХреЗ рдПрдкреАрдЖрдИ рд╣реИрдВ, рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ: рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдкрд░ рдПрдХ рдЖрдИрдкреА рдкрддрд╛ рд╣реИ, рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ рдПрдХ рджреЗрд╢ рдпрд╛ рд╢рд╣рд░ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИрдВ, рддреЛ рдХреБрдЫ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реАред
рдЬрд┐рдпреЛрдЖрдИрдкреА рдХреЗ рд╕рд╛рде
рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ рд╕рднреА рд╕рд╛рдЗрдЯреЛрдВ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ: рдЙрдиреНрд╣реЗрдВ рди рдХреЗрд╡рд▓ рд╕рд░рд▓ рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╛рдЗрдЯ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрдкрдиреЗ рд▓рд┐рдП рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ django-ipgeobit рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдХрд░
рдПрдХ рдЫреЛрдЯреА django-geoip рдмреИрдЯрд░реА рд▓рд┐рдЦреАред
Django-GeoIP
рдЖрд╡реЗрджрди рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн: рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рднреВрдЧреЛрд▓ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдиреБрд░реЛрдз рд╡рд╕реНрддреБ рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрдм рд╕рд╛рдЗрдЯ рдкрд░ рд╕рд╛рдордЧреНрд░реА, рдЬрд┐рд╕рдореЗрдВ "рдХреНрд╖реЗрддреНрд░реАрдпрддрд╛" рд╣реИ, request.location рдорд╛рди рджреНрд╡рд╛рд░рд╛ view.py рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рд╕реБрд╡рд┐рдзрд╛рдУрдВ
- рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд django-geoip рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рд░рд▓ рдХрджрдо;
- ReadTheDocs рдкрд░ рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рд▓реЗрдЦрди ;
- рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ ;
- рдкреНрд░рдмрдВрдзрди рдЯреАрдо рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛;
- рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ "рдЕрдкрдирд╛" рднреВрдЧреЛрд▓ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдПрдкреАрдЖрдИ;
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдирд╛ рдХреНрд╖реЗрддреНрд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ;
- django- рдореЗрдЬрдмрд╛рди рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдгред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реБрд╡рд┐рдзрд╛рдПрдБ
Django-geoip рдПрдкреНрд▓рд┐рдХреЗрд╢рди рднреВрдЧреЛрд▓ рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рджреЗрд╢ - рдХреНрд╖реЗрддреНрд░ - рд╢рд╣рд░, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ DBMS рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИред рднреВрдЧреЛрд▓ рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдЖрдИрдкреА рдкрддреЗ рдХреА рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХрд╛ рдбреЗрдЯрд╛ рдЪреМрдереА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣реИред рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЗрд╡рд▓ ipgeobase.ru рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд░реВрд╕ рдФрд░ рдпреВрдХреНрд░реЗрди рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рд╣рдЬрд╛рд░ рд╢рд╣рд░ рдФрд░ 150 рд╣рдЬрд╛рд░ рдЖрдИрдкреА рд░реЗрдВрдЬ рд╣реИред
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЕрдкрдирд╛ рднреВрдЧреЛрд▓ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреА рдЪреБрдиреМрддрд┐рдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╣рдо рд░реВрд╕ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕реНрдерд╛рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рджреВрд╕рд░реЗ рдореЗрдВ - рдЙрди рд╢рд╣рд░реЛрдВ рдХреЗ рд╕рдореВрд╣ рддрдХ рдЬрд┐рд╕рдореЗрдВ рдХрдВрдкрдиреА рдореМрдЬреВрдж рд╣реИред рдпрд╣ рдореЙрдбрд▓ ipgeobase рднреВрдЧреЛрд▓ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП "рдореБрдЦреМрдЯрд╛" рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдореЗрдВ рдХрдИ рдХреНрд╖реЗрддреНрд░реАрдп "рд╕рдВрд╕реНрдХрд░рдг" рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдПрдХ рдордирдорд╛рдирд╛ рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реВрд╕реА рд╕рдВрдШ рдХреЗ рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдЖрд░реЗрдЦ рдореЗрдВ рднреВ-рддрд╛рд▓рд┐рдХрд╛):

рдпрд╣ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЕрдкрдиреЗ рднреВрдЧреЛрд▓ рдореЙрдбрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ MyCustomLocation:
рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп django рдореЙрдбрд▓ рд╣реИ, рдЬреЛ рддреАрди рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреВрд░рдХ рд╣реИ рдЬреЛ рдЬрд┐рдпреЛрдЖрдИрдкреА рдореБрдЦреМрдЯрд╛ рдХреЗ "рдЗрдВрдЯрд░рдлрд╝реЗрд╕" рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдирд╛рдо рдФрд░ рдбреЙрдХрд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдпрд╣ рд╢рд╣рд░реЛрдВ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рднрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ djagno-geoip рдореЙрдбрд▓ рд╕реЗ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред
рд╣рдо рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
GEOIP_LOCATION_MODEL = 'geo.models.MyCustomLocation'
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЬреЛрдбрд╝реЗрдВ:
MIDDLEWARE_CLASSES = (... 'django_geoip.middleware.LocationMiddleware', ... )
рдФрд░ рд╡реЙрдЗрд▓рд╛: request.location рдореЗрдВ рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ MyCustomLocation рдореЙрдбрд▓ рдХрд╛ рдореВрд▓реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИред
def my_view(request): """ Passing location into template """ ... context['location'] = request.location ...
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрди рд╢рд╣рд░реЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд╖реЗрддреНрд░ (get_default_location) рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг "рдХреНрд╖реЗрддреНрд░реАрдп" рд╕рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ
рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрд▓реНрдлрд╛, рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рд╕рдВрд╕реНрдХрд░рдг 0.2.2)ред рдЕрд▓реНрдлрд╛ рд╕реНрдерд┐рддрд┐ рд╕рдВрдХреЗрдд рджреЗрддреА рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдкреАрдЖрдИ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдЗрд╕реЗ рди рдХреЗрд╡рд▓ рд░реВрд╕ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐
рджреБрдирд┐рдпрд╛ рдХреЗ
рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рд▓рд╛рдЧреВ
рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдЖрдИрдкреА рд░реЗрдВрдЬ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХреЗ
рдЕрдиреБрдХреВрд▓рди рдХрд╛ рд╡рд┐рдЪрд╛рд░ рднреА рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрд╛ред
рд╕реНрд░реЛрдд рдХреЛрдб
github рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред