Для разъяснения объяснения camflan давайте предположим, что Вы имеете
url(regex=r'^user/(?P<username>\w{1,50})/$', view='views.profile_page')
http://domain/user/thaiyoshi/?message=Hi
Правило диспетчера URL поймает части пути URL (здесь "user/thaiyoshi/"
) и передайте их функции представления наряду с объектом запроса.
Строка запроса (здесь message=Hi
) анализируется и параметры хранятся как a QueryDict
в request.GET
. Никакое дальнейшее соответствие или обработка для HTTP НЕ ДОБИРАЮТСЯ, параметры сделан.
Эта функция представления использовала бы обе части, извлеченные из пути URL и параметра запроса:
def profile_page(request, username=None):
user = User.objects.get(username=username)
message = request.GET.get('message')
Как примечание стороны, Вы найдете метод запроса (в этом случае "GET"
, и для отправленных форм обычно "POST"
) в request.method
. В некоторых случаях полезно проверить, что это соответствует тому, что Вы ожидаете.
Обновление: При решении, использовать ли путь URL или параметры запроса для передающей информации, следующее может помочь:
/blog/post/15/
(нет /blog/posts/?id=15
)/blog/post/15/?show_comments=1
или /blog/posts/2008/?sort_by=date&direction=desc
/blog/post/2008/09/30/django-urls/
Стандартное решение (на php):
if ($_SERVER['HTTP_X_FORWARDED_FOR']){
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else{
$ip = $_SERVER['REMOTE_ADDR'];
}
Но, как сказано в первом ответе, все зависит от фактически установленного заголовка.
Это зависит от прокси. Некоторые прокси-серверы добавляют заголовок, который дает исходный IP-адрес, заголовок X-Forwarded-For, но с учетом того, что большинство компаний используют прокси-серверы для скрытия внутренней сетевой структуры, что редко. Если это так, то вы не сможете сделать это легко.
Если у вас есть контроль над прокси, то он '
X-Forwarded-For
- единственный способ получить IP-адрес клиента. Проверьте, есть ли способ включить это в вашем прокси.
На некоторых прокси он дает вам возможность обрабатывать существующий заголовок XFF (когда запрос проходит через несколько прокси). Вот что вам нужно принять во внимание: