2017-07-18 79 views
0

我想将一个变量传递给另一个模板。 第一个模板我标识变量并转到第二个模板。从第二个我想要传递这个变量到第三个模板。将变量传递给下一个模板

valoare-list.html

{% for valoare in valoares %} 
    <a href="{% url 'valoare_detail' pk=valoare.pk %}"> 
      Contracte de valoare {{ valoare.tip_valoare }} 
    </a> 
{% endfor %} 

valoare-detail.html

<!-- This variable to be sent to the next template --> 
Valoare: {{ valoare.tip_valoare }} <br> 

{% for tip in tips %} 
     <a href="{% url 'contract_list' valoare=valoare.tip_valoare pk=tip.pk %}"> 
      Tip Contracte de {{ tip.tip_contract }} 
     </a> 
{% endfor %} 

合同-list.html

Valoare: {{ valoare.tip_valoare }} <br> 
Tip Contract: {{ tip.tip_contract }} 

models.py

from django.db import models 


class Valoare(models.Model): 
    VALOARE_CHOICES = (
      ("MICA","mica"), 
      ("MARE","mare"), 
    ) 
    tip_valoare = models.CharField(max_length=4, choices=VALOARE_CHOICES, default="MICI") 
    file_name = models.FileField(null=True, blank=True) 

    def __str__(self): 
     return self.tip_valoare 


class Tip(models.Model): 
    TIP_CHOICES = (
      ("BUNURI","bunuri"), 
      ("SERVICII","servicii"), 
      ("LUCRARI","lucrari"), 
    ) 
    tip_contract = models.CharField(max_length=8, choices=TIP_CHOICES, default="BUNURI") 
    file_name = models.FileField(null=True, blank=True) 

    def __str__(self): 
     return self.tip_contract 

views.py

from django.shortcuts import render, get_object_or_404 
from .models import Valoare, Tip 


def valoare_list(request): 
    valoares = Valoare.objects.all 
    return render(request, 'contracte/valoare_list.html', {'valoares': valoares}) 

def valoare_detail(request, pk): 
    valoare = get_object_or_404(Valoare, pk=pk) 
    tips = Tip.objects.all 
    return render(request, 'contracte/valoare_detail.html', {'valoare': valoare, 'tips': tips}) 

def contract_list(request, valoare, pk): 
    (?????) 
    tip = get_object_or_404(Tip, pk=pk) 
    return render(request, 'contracte/contract_list.html', {'valoare': valoare, 'tip': tip}) 

urls.py

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.valoare_list, name='valoare_list'), 
    url(r'^valoare/(?P<pk>\d+)/$', views.valoare_detail, name='valoare_detail'), 
    url(r'^contract/(?P<valoare>[a-z]{4})/(?P<pk>\d+)/$', views.contract_list, name='contract_list'), 
] 

回答

0

既然你传递tip_valoare通过这个:<a href="{% url 'contract_list' valoare=valoare.tip_valoare pk=tip.pk %}">,那么URL url(r'^contract/(?P<valoare>[a-z]{4})/(?P<pk>\d+)/$', ...)valoare值,将是tip_valoare(4较低大小写字母)。

然后,你可以得到valoare对象像这样(的contract_list视图内):

def contract_list(request, valoare, pk): 
    # (?????) - valoare is actually the tip_valoare 
    valoare = get_object_or_404(Valoare, tip_valoare=valoare) 
    tip = get_object_or_404(Tip, pk=pk) 
    return render(request, 'contracte/contract_list.html', {'valoare': valoare, 'tip': tip}) 
+0

完美,它的工作原理。非常感谢。 – Mircea