Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django转换和多视图_Django_Forms - Fatal编程技术网

Django转换和多视图

Django转换和多视图,django,forms,Django,Forms,我有表格 amount = forms.IntegerField(label='Amount :',help_text='enter price') 和模板html {% if contact_data.amount %} <h4> Amount : {{ contact_data.amount }}</h4> {%if contact_data.amount%} 金额:{{contact_data.Amount}} 我想在模板html中打印'amount'和'a

我有表格

amount = forms.IntegerField(label='Amount :',help_text='enter price')
和模板html

{% if contact_data.amount %}
<h4> Amount :  {{ contact_data.amount }}</h4>
{%if contact_data.amount%}
金额:{{contact_data.Amount}}

我想在模板html中打印'amount'和'amount'*1,75和'amount'/0.45?最佳解决方案是什么?

我不确定我是否理解这个问题……但如果您想做的是显示
金额
金额*1.75
装载/0.45
(不确定您是否打算在此处再次乘法)。那么……有很多方法可以做到这一点

  • 有些人会争辩说,您可能应该在视图中计算所有这些值,然后在模板中显示它们。有关如何将数据从视图传递到模板的示例如下:

    from django.shortcuts import render_to_response
    
    def my_view(request):
        # Assuming a function get_contact_data() because I don't know where you are
        # getting this.
        contact_data = get_contact_data()
        return render_to_response(
            'polls/detail.html',
            {
                'amount_one': contact_data.amount,
                'amount_two': contact_data.amount * 1.75,
                'amount_three': contact_data.amount / 0.45,
            }
        )
    
    # And then in the template...
        <h4> Amount One: {{ amount_one }}</h4>
        <h4> Amount Two: {{ amount_two }}</h4>
        <h4> Amount Three: {{ amount_three }}</h4>
    
    从django.shortcuts导入渲染到响应
    定义我的视图(请求):
    #假设函数get_contact_data(),因为我不知道您在哪里
    #得到这个。
    联系人\数据=获取\联系人\数据()
    返回render\u to\u响应(
    “polls/detail.html”,
    {
    “金额”:联系“数据金额”,
    “金额”\u two:联系\u data.amount*1.75,
    “金额三”:联系“数据金额/0.45”,
    }
    )
    #然后在模板中。。。
    金额一:{{Amount_One}
    金额二:{{金额二}
    金额三:{{金额三}
    
  • 简单的解决方法是在模板中处理这个问题。在这种情况下,我建议使用。这将允许您在模板中执行以下操作:

    <h4> Amount :  {{ contact_data.amount }}</h4>
    <h4> Amount :  {{ contact_data.amount|mul:1.75 }}</h4>
    <h4> Amount :  {{ contact_data.amount|div:0.45 }}</h4>
    
    金额:{{contact_data.Amount}
    金额:{contact_data.Amount{mul:1.75}
    金额:{contact_data.Amount|div:0.45}
    
  • 如果contact_数据是某种类型的数据模型,您可以在模型级别处理它:

    from django.db import models
    
    class ContactData(models.Model):
        amount = models.IntegerField()
    
        @property
        def amount_two(self):
            return self.amount * 1.75
    
        @property
        def amount_three(self):
            return self.amount / 0.45
    
    # And then in the template...
        <h4> Amount One:  {{ contact_data.amount }}</h4>
        <h4> Amount Two:  {{ contact_data.amount_two }}</h4>
        <h4> Amount Three:  {{ contact_data.amount_three }}</h4>
    
    来自django.db导入模型的
    
    类别ContactData(models.Model):
    amount=models.IntegerField()
    @财产
    def数量(自身):
    返回自付金额*1.75
    @财产
    def数量_三(自身):
    返回自付金额/0.45
    #然后在模板中。。。
    金额一:{{contact_data.Amount}}
    金额二:{{contact_data.Amount_Two}
    金额三:{contact_data.Amount_Three}
    

  • 如果要在视图中执行此操作并且正在使用,请使用将预先计算的值添加到传递到模板的上下文中

    视图.py中

    from django.views.generic import DetailView
    
    from .models import YourModel
    
    
    class YourModelDetailView(DetailView):
        model = YourModel
    
        def get_context_data(self, **kwargs):
            context = super(YourModelDetailView, self).get_context_data(**kwargs)
            context['amount_mult'] = self.contact_data.amount * 1.75
            context['amount_div'] = self.contact_data.amount / 0.45
            return context
    

    然后在模板中,您可以使用如下内容:
    {{amount\u mult}
    {amount\u div}

    您还可以使用@mfcovington所指示的基于类的视图来执行此操作