如何解决有条件地显示具有DJANGO模板语言的按钮
我有一个页面,如果用户被标记为“可制造”(可计费),则该页面应显示一个按钮,否则,该按钮不应出现。我尝试了以下代码:
{% if form_experfil.facturable %}
<a href="{% url 'incid:xtodo' %}?pagref=factdatshow" type="button"
class="btn btn-primary waves-effect"> Consultar datos de facturación</a>
{% endif %}
但是它一直在显示。这种失败和其他失败使我认为{%if%}标签的行为并不像我想的那么简单,它不仅将html代码裁剪为endif标签,而且还首先呈现了某些内容。有没有正式记载而没有神秘参考的地方?是否有一种方法可以在客户拥有此数据时仅显示此按钮,而不显示其他数据?
这是视图:
def perfil_view(request):
perfil = ExUserProfile.objects.get(user=request.user)
facturar = perfil.facturable
if facturar:
factdat = Factdat.objects.get(cliente=request.user)
if request.method == 'POST':
form_perfil = perfilEditForm(data=request.POST,instance=request.user)
form_experfil = experfilEditForm(data=request.POST,instance=perfil)
if facturar:
form_factdat = factdatEditForm(data=request.Post,instance=perfil)
if all([form_perfil.is_valid(),form_experfil.is_valid(),form_factdat.is_valid()]):
form_perfil.save()
form_experfil.save()
form_factdat.save(commit=facturar)
return HttpResponseRedirect('incid/perfil')
else:
form_perfil = perfilEditForm(instance=request.user)
form_experfil = experfilEditForm(instance=perfil)
if facturar:
form_factdat = factdatEditForm(instance=factdat)
template = "incid/perfil.html"
if facturar:
return render(request,template,{
'form_perfil': form_perfil,'form_experfil': form_experfil,'form_factdat': form_factdat
})
else:
return render(request,'form_experfil': form_experfil
})
这些是模型:
eclass ExUserProfile(models.Model):
user = models.OneToOneField(User,primary_key=True,on_delete=models.DO_NOTHING)
logo = ResizedImageField(size=[200,200],crop=['middle','center'],quality=75,upload_to='static/logos/',default='logos/no-img.jpg')
facturable = models.BooleanField(default=False)
def __str__(self):
return str(self.user)
class Factdat(models.Model):
cliente = models.OneToOneField(User,verbose_name='cliente_fact',default='',on_delete=models.DO_NOTHING)
nomfact = models.CharField(max_length=240,verbose_name='nomfact')
niffact = models.CharField(max_length=16,verbose_name='niffact')
mailfact = models.EmailField(max_length=254,verbose_name='mailfact')
telfact = models.CharField(max_length=24,verbose_name='telfact')
persfact = models.CharField(max_length=128,verbose_name='persfact')
class Meta:
verbose_name = "Fact_dat"
verbose_name_plural = "Fact_datos"
def __str__(self):
return str(self.cliente)
以防万一,这里是整页:
def perfil_view(request):
perfil = ExUserProfile.objects.get(user=request.user)
facturar = perfil.facturable
if facturar:
factdat = Factdat.objects.get(cliente=request.user)
if request.method == 'POST':
form_perfil = perfilEditForm(data=request.POST,'form_experfil': form_experfil
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。