我想在view.py中进行查询,以便显示客户端输入的两个整数之和。我似乎找不到一种方法来添加客户端输入的数字并显示在服务器上。任何关于如何解决这个问题的建议都会非常有帮助。如果有任何与问题有关的疑问,请提问,我会尽量澄清
Models.py::
from django.db import models
from django.conf import settings
class Addition(models.Model):
name = models.CharField(max_length=10)
int1 = models.IntegerField()
int2 = models.IntegerField()
**Edited Section**
@property
def total_score(self):
total = self.int1+self.int2
return total
Form.py::
from django import forms
from . models import Addition
class AdditionForm(forms.ModelForm):
class Meta:
model = Addition
fields = [
'name',
'int1',
'int2',
]
Serializer.py::
from rest_framework import serializers
from . models import Addition, Subtraction
class AdditionSerializer(serializers.ModelSerializer):
class Meta:
model = Addition
fields = '__all__'
View.py::
from django.shortcuts import get_list_or_404,render
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from . forms import AdditionForm
from . models import Addition
from . serializers import AdditionSerializer
from .forms import SubtractionForm
from . models import Subtraction
from . serializers import SubtractionSerializer
class AdditionList(APIView):
def get(self,request):
additions = Addition.objects.all()
serializer = AdditionSerializer(additions,many = True)
return Response(serializer.data)
class AdditionListForm(APIView):
def post(request):
form = AdditionForm(request.POST or None)
if form.is_valid():
form.save()
form =AdditionForm()
return render(request,'add/addition_form.html',{'form':form})
如果您的问题是“我应该在哪里进行添加”,则没有“纯技术性”的答案-如果您愿意,将其放在您的视图中、表单中、序列化程序中、模型中,甚至放在第三部分包中的不同函数中,在技术上是合法和有效的
但从设计角度来看,有一个明确的答案。结构良好的应用程序separates the domain layer from the UI-域层不应依赖于UI
在Django中,UI由视图/序列化器(如果构建REST api)/模板/表单组成,域层主要与模型中的数据访问层相关联(但不一定在
Model
类中-某些部分最好作为独立函数或类实现)在你的例子中,提供加法的结果显然是你的})。当然,您必须自定义序列化程序等,才能将此结果与数据一起返回
Addition
模型的责任。这并不意味着您应该向模型中添加一个result
数据库字段(这将打破关系模型规范化规则),只需添加一个get_result(self)
方法(或者,因为这里的操作非常便宜,所以添加一个result
{注意:您还可以使用Django的orm注释将添加的内容委托给您的数据库(RDBMs不是用于数据存储的jsut,它们可以对您的数据执行许多操作,通常比纯Python代码快得多)。这当然有点过分了,但由于这是一个玩具学习项目,你可能也想尝试一下,以达到教育目的
作为一般指导原则:您的域层应该提供所有的域逻辑,而对UI层一无所知,因此您可以将其用于不同的UI(传统的http/html UI、rest API、命令行脚本、本机GUI等等),UI应该只处理表示/用户交互逻辑,并将所有其他内容委托给域
相关问题 更多 >
编程相关推荐