django 调用视图而不传递请求

nhjlsmyf  于 2023-11-20  发布在  Go
关注(0)|答案(1)|浏览(87)

我有一个观点,叫做这样。

def device_check(request, d, i):
# A bunch of stuff the view does

字符串
当我调用这个视图时,默认情况下它工作得很好,没有问题,然后我有另一个函数,它生成一些数据,并试图调用该函数进行检查,我一直得到错误,它没有传递足够的参数,因为我试图这样使用它

def test_function(request):
    test = device_check("test", "i-1799")


我理解这个错误是因为我没有像这样传递请求参数

device_check(request, "test", "i-1799")


但是我不知道如何从另一个函数中传递请求参数。
有没有更好的方法来做这件事,或者绕过这件事的方法?

oxalkeyp

oxalkeyp1#

从另一个视图函数调用一个视图函数并不常见,也不是最佳实践。您可能希望将公共逻辑放在另一个实用程序函数中,以便在需要时可以跨视图重用。
但是在您的例子中,您可以在测试函数中创建另一个http请求对象。

from django.http import HttpRequest

def test_function(request):
    # Create a new HttpRequest object
    fake_request = HttpRequest()

    # set attributes of the fake request as needed i.e. user, path ..
    fake_request.user = request.user  # pass the user to the request

    # Call device_check with the fake request
    test = device_check(fake_request, "test", "i-1799")

字符串

相关问题