Here is my view function where i have tried to excute the functionality
@login_required
def secure_pdf(request,file):
user = get_object_or_404(User)
order = Order.objects.filter(user=user).all()
if user in order:
document = get_object_or_404(Exam,pdf='pdf/' file)
path,file_name = os.path.split(file)
response = FileResponse(document.pdf)
return response
else:
return HttpResponse("acess denied")
my order model
class Order(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
user = models.ForeignKey(User, related_name='orders', blank=True, null=True,
on_delete=models.CASCADE)
transaction_id = models.IntegerField(blank=True, null=True)
status = models.CharField(max_length=60, blank=True, null=True)
tx_ref = models.IntegerField(blank=True, null=True)
created_at = models.DateTimeField(auto_now_add=True)
CodePudding user response:
Try to read a little bit more about Django: https://docs.djangoproject.com/en/4.0/
at first. If you use authentication from django:
user = request.user
At second. What you mean if user in order. User cannot be in list of orders. user is User model and order is Order model. Something really wrong in your logic.
orders = Order.objects.filter(user=user).all() # this is list of orders
orders - is already filtered by user list of orders.
if orders.count():
...
or
if orders.exists():
...
You can use oredrs.get, orders.list, orders.first. But you don't use it anywhere. And all what happens in if clause is not readable. Exam? File? Path? file_name? What you want to do?
