Как перезагрузить свою же html страничку с параметрами?

ajkpro

Новичок
Пользователь
Сен 5, 2021
13
0
1
Как перезагрузить свою же html страничку с параметрами?

В php делалось просто: Header("Location: ".INDEX_SELF.$ref);

У тут что-то недопонимаю и в и-нете уже обыскался. Даже вопрос задать нормально не получается.

Если сейчас поняли, то, хоть, мысль правильно помиогите сформулировать. :)


Linux Mint, Python3

Спасибо!
Александр
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
перезагрузить свою же html страничку
вы используете какой то фремворк? джанго или фласк?

просто отправить заголовок можно так
Python:
import requests

url = 'https://google.com'
header = {'user-agent': 'app/0.0.1'}
resp = requests.get(url, headers=header)

print(resp)
здесь мы отправили гуглу версию нашего клиента (как бы браузера), ответ пришел 200, значит все хорошо...
 
  • Мне нравится
Реакции: Student

ajkpro

Новичок
Пользователь
Сен 5, 2021
13
0
1
Т.е. я запустив этот скрипт должен увидеть, что сайт перегрузился и в адресной строке я вижу:
Код:
http://www.mysite.info/tst-refresh.py?test=yes
но этого нет

Код:
print (head)

print ("<h1>Тест</h1>")
environ=os.environ
url=environ["SCRIPT_URI"]+'?test=yes'

header = {'user-agent': 'app/0.0.1'}
resp = requests.get(url, headers=header)

print(resp)

print (html_end)
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
Т.е. я запустив этот скрипт должен увидеть, что сайт перегрузился и в адресной строке я вижу:
Код:
http://www.mysite.info/tst-refresh.py?test=yes
но этого нет

Код:
print (head)

print ("<h1>Тест</h1>")
environ=os.environ
url=environ["SCRIPT_URI"]+'?test=yes'

header = {'user-agent': 'app/0.0.1'}
resp = requests.get(url, headers=header)

print(resp)

print (html_end)
я вам показал пример, как отправить заголовок...
для примера отправили гуглу версию клиента...
вам нужно в заголовок написать свои параметры, как в пхп...

в адресной строке я вижу:
в адресной строке вы ничего не увидите, вы увидите в ответе на запрос, что прошло все успешно...
если только вы не используете какой-нибудь фреймворк, вы же не ответили на этот вопрос...


для работы с браузером можно использовать selenium ...
 
Последнее редактирование:

ajkpro

Новичок
Пользователь
Сен 5, 2021
13
0
1
В чем смысл моего вопроса?

Пользователь бродит по сайту. Дальше, он решает зарегится и регистрируется.

Как теперь его перебросить на страничку с которой он ушел на регистрацию?

Я уж тут улопатил и-нет, но что-то никак не склеивается...
А selenium больше для управлением браузером, типа, как бы человек пользует.

Linux Mint, Python3 и никаких фрэймворков.

Спасибо!
Александр
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
В php делалось просто: Header("Location: ".INDEX_SELF.$ref);
В питоне примерно также:
Python:
self.send_header('Location', new_path)
Вот пример:
Python:
from http.server import HTTPServer, BaseHTTPRequestHandler


class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        """Метод для обработки GET-запросов"""

        # если запрос на страницу tst-refresh.html
        if self.path == '/tst-refresh.html':
            new_path = self.path + '?test=yes'

            # то перенаправляем его на страницу tst-refresh.html
            # с параметром test=yes
            self.send_response(301)
            self.send_header('Location', new_path)
            self.end_headers()

        # на любой другой запрос показываем страницу без редиректа
        else:
            self.send_response(200)
            self.end_headers()


# запуск сервера на локальном хосте (порт 8000)
httpd = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
httpd.serve_forever()
 

ajkpro

Новичок
Пользователь
Сен 5, 2021
13
0
1
В питоне примерно также:
Python:
self.send_header('Location', new_path)
Вот пример:
Python:
from http.server import HTTPServer, BaseHTTPRequestHandler
. . .
# запуск сервера на локальном хосте (порт 8000)
httpd = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
httpd.serve_forever()

Вообще это вариант для 2-го питона. На 3-й никак не получается перевести, какие-то дебильные примеры кругом.
Потом, тут создается сервер (localhost', 8000). А у меня-то есть стандартный сервер - my-host.ru:80
Зачем мне ещё какой-то сервер?

Извините, не понял.

Linux Mint, Python3 и никаких фрэймворков.

Спасибо!
Александр
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Зачем мне ещё какой-то сервер?
Я привел пример редиректа в питоне для сервера из стандартной библиотеки python 3 (без фреймворков).
А у меня-то есть стандартный сервер - my-host.ru:80
Покажите код вашего стандартного сервера.
 

ajkpro

Новичок
Пользователь
Сен 5, 2021
13
0
1
Ну, не понимаю я чего-то...
Покажите код вашего стандартного сервера.
Как я покажу это? matica.info на gb.ru

Код моей странички? Вот, тест, который я пытаюсь понять.

Код:
#!/home/virtwww/*_matica-info_*/local/bin/python
# -*- coding: utf-8 -*-
#
# редирект
#
import os
import requests

head="""<html><head>
    <title>access</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head><body>
"""

html_end="""
</body></html>
"""

print ("Content-Type: text/html\n") # при работе с куками не нужен!
print (head)        ##########################################

print ("<h3>Test</h3>")

environ=os.environ
print (f'<br />{environ["SCRIPT_URI"]}')
path = environ["SCRIPT_URI"]
new_path = path + '?test=yes'
print (f'<br />{new_path}')

import SimpleHTTPServer
import SocketServer

class myHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
   def do_GET(self):
       print (self.path)
       self.send_response(301)
       new_path = '%s%s'%('http://newserver.com', self.path)
       self.send_header('Location', new_path)
       self.end_headers()

PORT = 8000
handler = SocketServer.TCPServer(("", PORT), myHandler)
print ("serving at port 8000")
handler.serve_forever()


print (html_end)    ##########################################
Как мне перейти на страницу www.matica.info?test=yes

Правда в данном случае ошибка: No module named 'SimpleHTTPServer'
И для Python3 непонятно пока.

Linux Mint, Python3 и никаких фрэймворков.

Спасибо!
Александр
 

ajkpro

Новичок
Пользователь
Сен 5, 2021
13
0
1
Посмотрел на фреймворк bottle и, как я понимаю теперь, для редиректа своей странички нужно создать некий сервер слушающий порт 80.
Он должен постоянно там болтаться или скорее при каждом редиректе можно заново создавать.
Видимо, в php этот сервер где-то скрыто создается.

А питонисты в большинстве своем юзают фреймворки и о том сервере даже не подозревают. Как и php-шники.

Linux Mint, Python3 и никаких фрэймворков.

Спасибо!
Александр
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Код моей странички? Вот, тест, который я пытаюсь понять.
Судя по вашему сайту в качестве сервера у вас используется apache2.
Редирект на питоне в данном случае можно реализовать так:
Python:
#!/home/virtwww/*_matica-info_*/local/bin/python

import os

scheme = os.environ['REQUEST_SCHEME']  # http или https
host = os.environ['REMOTE_ADDR']  # matica.info
url = os.environ['REQUEST_URI']  # tst-refresh.py?test=yes

# полный путь из адресной строки
path = f'{scheme}://{host}{url}'

# если в запросе есть параметр test=yes
if 'test=yes' in path:
    # перенаправляем на страницу matica.info/test.py
    print(f'Location: {scheme}://{host}/test.py')
    print()
# если без параметра не перенаправляем
else:
    print('Content-Type: text/plain')
    print()
    # print(html)
 

ajkpro

Новичок
Пользователь
Сен 5, 2021
13
0
1
Python:
#!/home/virtwww/*_matica-info_*/local/bin/python
    print(f'Location: {scheme}://{host}/test.py?test=yes')
    print()
СПАСИБО!
Я же две недели лопачу и-нет, а мне суют reuests или ещё чего. Да, проосто обижают бывшего php-шника!
СПАСИБО!
Оказывается всё просто. Мог бы и сам догадаться.

Linux Mint, Python3 и никаких фрэймворков.

Спасибо!
Александр
 

Форум IT Специалистов