Django передает параметры в представления и шаблоны - PullRequest
0 голосов
/ 12 октября 2018

Я получил дерево навигации, которое сообщает мне, где я нахожусь на моем веб-сайте, чтобы построить это дерево навигации, мне всегда нужно передавать все переменные из шаблона в представление как <input type="hidden">.Затем мне нужно передать его от представления к следующему шаблону, и это продолжается и выглядит как плохое решение для передачи переменных из каждого шаблона в каждое представление.поэтому мой вопрос, есть ли лучшее решение моей проблемы здесь, это экран дерева навигации.

template:

<form action="{% url 'aktentabelle' %}" method="post" style="display:inline-block">
            {% csrf_token %}
        <input type="hidden" name="mitglied" value="{{Container.containernr}}" />
        <input type="hidden" name="contpk" value="{{Container.pk}}" />
        <input type="hidden" name="projectnr" value="{{projectnr}}" />
        <input type="hidden" name="status" value="{{Container.status}}" />
        <input type="hidden" name="chargepk" value="{{chargepk}}" />
        <input type="hidden" name="chargenr" value="{{chargenr}}" />
        <input class="btn btn-primary" type="submit" value="anzeigen" />
        </form>

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

views.py:

def aktentabelle(request):
    assert isinstance(request, HttpRequest) 
    container = request.POST['mitglied']
    z = AkteForm
    projectnr = request.POST['projectnr']
    chargepk = request.POST['chargepk']
    chargenr = request.POST['chargenr']
    contpk = request.POST['contpk']
    closecontainerform = CloseContainerForm
    akte_list = Akte.objects.filter(container__containernr=container)
    Anzahl_Akten =Akte.objects.filter(container__containernr=container).count
    status = request.POST['status']
    return render(
       request,
       'app/aktentabelle.html',
       {
        'title':'About',
        'akte_list':akte_list,
        'anzahl':Anzahl_Akten,
        'container':container,
        'aktenform':z,
        'status':status,
        'closecontainerform': closecontainerform,
        'date':datetime.now().date,
        'contpk':contpk,
        'chargepk':chargepk,
        'chargenr':chargenr,
        'projectnr':projectnr,
       }
       )

Как вы можете видеть, я использую так много строк, чтобы просто передать все переменные из одного шаблона в представление и снова вернуться в шаблон, чтобы построить это дерево навигации.

1 Ответ

0 голосов
/ 12 октября 2018

Один из способов сделать это - использовать filters .Что-то вроде нижеможет сделать что-то вроде ниже в вашем шаблоне.

{% load templatefilename %}
<form action="{% url 'aktentabelle' %}" method="post" style="display:inline-block">
            {% csrf_token %}
        <input type="hidden" name="mitglied" value="{{get_fields|containernr}}"
</form>
...