在Django/Python中测试视图
类用户配置文件(APIView): Permission_classes = (IsAuthenticated,)
def get(self, request):
user = self.request.user
user_id = user.id
client_info = ClientInformation.objects.filter(user_id=user_id).values('full_name', 'address1', 'address2', 'city', 'state', 'zipcode')
return JsonResponse(client_info[0])
def put(self, request):
try:
user = self.request.user
user_id = user.id
data = self.request.data
full_name = data['full_name']
address1 = data['address1']
address2 = data['address2']
city = data['city']
state = data['state']
zipcode = data['zipcode']
ClientInformation.objects.filter(user_id=user_id).update(full_name=full_name, address1=address1, address2=address2, city=city, state=state, zipcode=zipcode)
return Response({ 'success': 'Profile has been updated.' })
except:
return Response({ 'error': 'Something went wrong when updating profile.' })
类 QuotesHistory(APIView): Permission_classes = (IsAuthenticated,)
def get(self, request):
user = self.request.user
user_id = user.id
quotes = list(FuelQuotes.objects.filter(user_id=user_id).values('id', 'gallons', 'delivery_address', 'delivery_date', 'price', 'amount_due'))
return JsonResponse(quotes, safe=False)
def post(self, request):
try:
user = self.request.user
user_id = user.id
data = self.request.data
FuelQuotes.objects.create(user_id=user_id, gallons=data['gallons'], delivery_address=data['delivery_address'], delivery_date=data['delivery_date'], price=data['price'], amount_due=data['amount_due'])
print(FuelQuotes.objects.all())
return Response({ 'success': 'Fuel quote has been submitted.' })
except:
return Response({ 'error': 'Something went wrong when submitting fuel quote.' })
类 GetPrice(APIView): Permission_classes = (IsAuthenticated,)
def get(self, request):
user = self.request.user
user_id = user.id
gallons = int(self.request.data['gallons'])
location_factor = 0.02 if ClientInformation.objects.get(user_id=user_id).state == 'TX' else 0.04
history_factor = 0.01 if len(FuelQuotes.objects.filter(user_id=user_id)) != 0 else 0
gallons_factor = 0.02 if gallons > 1000 else 0.03
company_factor = 0.1
price = (1.5 * (1 + (location_factor - history_factor + gallons_factor + company_factor)))
return JsonResponse({"price": round(price,3), "amount_due": round(gallons * price, 2)})
我正在尝试在 django 中为此视图页面构建一个测试页面,但我遇到了很多挑战
class UserProfile(APIView):
permission_classes = (IsAuthenticated,)
def get(self, request):
user = self.request.user
user_id = user.id
client_info = ClientInformation.objects.filter(user_id=user_id).values('full_name', 'address1', 'address2', 'city', 'state', 'zipcode')
return JsonResponse(client_info[0])
def put(self, request):
try:
user = self.request.user
user_id = user.id
data = self.request.data
full_name = data['full_name']
address1 = data['address1']
address2 = data['address2']
city = data['city']
state = data['state']
zipcode = data['zipcode']
ClientInformation.objects.filter(user_id=user_id).update(full_name=full_name, address1=address1, address2=address2, city=city, state=state, zipcode=zipcode)
return Response({ 'success': 'Profile has been updated.' })
except:
return Response({ 'error': 'Something went wrong when updating profile.' })
class QuotesHistory(APIView):
permission_classes = (IsAuthenticated,)
def get(self, request):
user = self.request.user
user_id = user.id
quotes = list(FuelQuotes.objects.filter(user_id=user_id).values('id', 'gallons', 'delivery_address', 'delivery_date', 'price', 'amount_due'))
return JsonResponse(quotes, safe=False)
def post(self, request):
try:
user = self.request.user
user_id = user.id
data = self.request.data
FuelQuotes.objects.create(user_id=user_id, gallons=data['gallons'], delivery_address=data['delivery_address'], delivery_date=data['delivery_date'], price=data['price'], amount_due=data['amount_due'])
print(FuelQuotes.objects.all())
return Response({ 'success': 'Fuel quote has been submitted.' })
except:
return Response({ 'error': 'Something went wrong when submitting fuel quote.' })
class GetPrice(APIView):
permission_classes = (IsAuthenticated,)
def get(self, request):
user = self.request.user
user_id = user.id
gallons = int(self.request.data['gallons'])
location_factor = 0.02 if ClientInformation.objects.get(user_id=user_id).state == 'TX' else 0.04
history_factor = 0.01 if len(FuelQuotes.objects.filter(user_id=user_id)) != 0 else 0
gallons_factor = 0.02 if gallons > 1000 else 0.03
company_factor = 0.1
price = (1.5 * (1 + (location_factor - history_factor + gallons_factor + company_factor)))
return JsonResponse({"price": round(price,3), "amount_due": round(gallons * price, 2)})
I'm trying to build a testing page in django for this views page, but I'm encountering lots of challenges
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论