Как правильно передать контекст функции драматурга при использовании Python Django в качестве основы для веб-приложения?Python

Программы на Python
Ответить
Anonymous
 Как правильно передать контекст функции драматурга при использовании Python Django в качестве основы для веб-приложения?

Сообщение Anonymous »

У меня есть веб-приложение, которое я сначала создал с помощью Flask, а затем полностью перестроил с помощью Django, чтобы воспользоваться преимуществами интерфейса администратора.
Оно создает флаер для детского футбольного матча, используя контекст для наложения на фоновом изображении через абсолютную позицию 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)
это пример шаблона, показывающий, как текст добавляется из контекста. Я использую шаблонизатор Django.

Код: Выделить всё

          {% 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)
с функцией драматурга, которая выглядит так. (Я следовал этой статье, создавая форматировщик кода на реальном Python, чтобы выяснить, делает ли этот шаблон то, что я хочу).

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»