Оно создает флаер для детского футбольного матча, используя контекст для наложения на фоновом изображении через абсолютную позицию CSS. Как только тренер доволен изображением, кнопка вызывает функцию «Создать», которая открывает браузер с драматургом и передает данные сеанса, чтобы воссоздать изображение и позволить тренеру загрузить его.
Когда тренер просматривает изображение, текстовые поля заполняются из контекста. все работает нормально.
Код: Выделить всё
def image(request):
... some other bits ...
for key in request.session.keys():
context[key] = request.session[key]
return render(request, 'coaches/image.html', context)
Код: Выделить всё
{% for player in squad %}
{{ player.number }}
{{ player.first }}
{{ player.last }}
{% if forloop.counter|divisibleby:2 %}
{% endif %}
{% endfor %}
Это связано с другим способом работы. С функцией драматурга вы проходите весь сеанс.
Код: Выделить всё
def generate(request):
session_data = {
"name": "mysite",
"value": request.COOKIES.get("mysite"),
"url": request.META['HTTP_HOST']
}
target_url = request.META['HTTP_HOST'] + "/coaches/image"
image_bytes = take_screenshot_from_url(target_url, session_data)
Код: Выделить всё
def take_screenshot_from_url(url, session_data):
with sync_playwright() as playwright:
webkit = playwright.webkit
browser = webkit.launch()
browser_context = browser.new_context(device_scale_factor=2)
browser_context.add_cookies([session_data])
page = browser_context.new_page()
page.goto(url)
screenshot_bytes = page.locator("#squad-image").screenshot()
browser.close()
return screenshot_bytes
Я выяснил, что переменная session_data содержит ключевое значение, в котором фактически находятся мои переменные сеанса. но я не уверен, как правильно их решить.
Я пробовал все виды вещей, включая сериализацию/десериализацию, создание словаря и его передачу, даже просто передачу одной переменной .
Я знаю, что, вероятно, допустил фундаментальную ошибку в том, как я понимаю, что здесь происходит, буду признателен за советы о том, что почитать. Я попытался вернуться к основам, и это работает. Я думаю, что ошибка заключается в том, как я понимаю разницу между сеансом Django, сохраняющим его в файлах cookie, и Flask, который этого не делает. Тогда как построить вызов представления драматурга с помощью фактического файла cookie.
Подробнее здесь: https://stackoverflow.com/questions/792 ... using-pyth
Мобильная версия