我想通过一个模板将一个变量传递给另一个模板。 第一个模板我识别变量并转到第二个。从第二个开始,我想将此变量传递给第三个模板。
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 :(得分:0)
由于您通过此tip_valoare
传递<a href="{% url 'contract_list' valoare=valoare.tip_valoare pk=tip.pk %}">
,因此网址valoare
内的url(r'^contract/(?P<valoare>[a-z]{4})/(?P<pk>\d+)/$', ...)
值将为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})