Django: Можно ли передать значение элемента DOM в TemplateTag? - PullRequest
0 голосов
/ 04 июня 2018

Будучи новичком в фреймворке, я столкнулся с проблемой создания представления (index.html), которое позволяет пользователю выбирать определенное значение из элемента ввода и показывать его. Это значение необходимо обработать и вывести на выходэтого процесса будет показано в шаблоне.

В настоящее время я получаю файл .txt из элемента ввода и сохраняю его содержимое внутри элемента ap с помощью небольшого js-скрипта.Содержимое этого элемента p (текст, содержащийся в выбранном файле) - это то, что мне нужно передать шаблону, чтобы обработать его с помощью созданной мной внешней библиотеки Python.Я пытаюсь использовать TemplateTag со следующей структурой:

def foo(value): ret = doOperations(value) return ret;

Однако я не уверен, что TemplateTags может получить значение элемента dom, так как примеры только в документации djangoshow TemplateTags используется с переменными, передаваемыми из представления.

Идеальным сценарием было бы как-то передать значение (текстовый элемент) непосредственно в шаблон: {{ valueOfDomElement|foo }}, где valueOfDomElement будет содержимым моего элемента p (текст, содержащийся в выбранном файле)

Я хотел бы знать, является ли мой подход к этой проблеме жизнеспособным или как мне поступить, чтобы правильно общаться между шаблоном тегов (при необходимости) и представлением.

1 Ответ

0 голосов
/ 04 июня 2018

РЕДАКТИРОВАТЬ: внесены изменения на основе ваших новых комментариев, чтобы лучше соответствовать вашей идее

Мне кажется, я понимаю, что вы пытаетесь сделать - я 'Я собираюсь выйти на конечности и сказать, что то, что вы хотите сделать, невозможно для языка шаблонов Django.Как только Django предоставляет веб-страницу конечному пользователю - любые изменения, которые они вносят в веб-страницу, выбирают выпадающие списки и т. Д., Больше не становятся доступными для логики шаблона.Шаблоны служат для доставки окончательного набора контента с сервера - один раз.

Поэтому, если вы хотите получить доступ к тегам шаблона - вы можете получить к ним доступ только тогда, когда сервер создает страницу для отправки клиенту.--once клиент / конечный пользователь имеет .html контент из представления / шаблона - шаблон и представление больше не доступны для дальнейшей работы со страницей.

Если вам нужно активно общаться с сервером на основевзаимодействие с пользователем с выпадающим списком / изменения формы и т. д., вы можете: A: отправить форму с пользовательскими изменениями на сервер. Просмотрите и обновите страницу / шаблон с этими изменениями в качестве переменных шаблона для обратной связи в шаблон с вашими тегами шаблона.или B: вы можете использовать AJAX для взаимодействия с простым API представления Django, который возвращает JSON для обработки клиентской страницы и вносит изменения.

У меня нет времени, чтобы дать решение B, но вот решение A (которое может быть достаточно простым для ваших нужд - как утверждают другие люди) - не так много, чтобы пойтина основе вашего описания

urls.py

from django.urls import path
from . import views
urlpatterns = [
    path('fooView/', views.fooView, name='fooView'),
]

views.py

from django.shortcuts import render
def fooView(self, request, **kwargs)
    if request.GET:#If we are getting a form submission
        #Let's add any of the form data provided
        p_data = request.GET['your_paragraph_element']

        #Do something here with 'p_data' -- the data from your p element to process it in python

        #Now pass your processed p_data BACK to the template as a template variable
        kwargs['processed_p_data'] = p_data
    return render(request, 'mytemplate.html', kwargs) 

mytemplate.html

<html>
<body>

<form action="/fooView/" method="get">
<input name="your_paragraph_element" hidden></input>
<input type="file"></input>
{# If there IS 'processed_p_data' #}
{% if processed_p_data%}
<p id="foobar">{{processed_p_data}}</p>
{% else %}
<p id="foobar"></p>
{% endif %}

<input type="submit" value="Send Server My Change">
</form>
</body>

<script>
    //All of your jscript code that grabs the data from the file
    //--puts it into the <p> element
    //--also puts it into the hidden <input> element so that it can be sent to the server as form GET data
</script>

</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...