【问题标题】:What is the recommended way of passing parameters in Django request when its required in each request?当每个请求都需要时,在 Django 请求中传递参数的推荐方式是什么?
【发布时间】:2020-11-07 23:15:11
【问题描述】:

我必须在每个 Django 请求中传递两个参数,以便在我的 Django 应用程序的每个视图上调用的装饰器中使用它们。

目前,我正在使用以下方式传递参数。

class RoleTaskForm(forms.Form):
    task_id = forms.CharField(max_length=256, required=False)
    action = forms.CharField(max_length=10, required=False)

在 html 文档中使用以下表单

<form name="role_task_form" method="get">
        <input type="hidden" name="task_id">
        <input type="hidden" name="operation">
</form>

按照JS函数来操作表单值,即相应地改变表单的动作并设置参数值。

function editProfile() {
    let form = document.role_task_form;
    form.task_id.value = "ProfileManagement";
    form.operation.value = 'edit';
    form.action = '/myschoolspace/edit-profile';
    form.submit();
}

然后调用上面的 JS 函数到 HTML 页面的锚标签,我们必须从那里导航到视图。

我正在使用这种方法将参数传递给每个请求,但是当需要在每个请求中传递参数时,我觉得这不是最佳实践。

请向我推荐最好的方法。

【问题讨论】:

    标签: python django django-views request django-request


    【解决方案1】:

    您可以使用一组常见的装饰器并在多个地方使用它,您可以定义一个装饰器列表或元组并使用它来代替多次调用 method_decorator()。这两个类是等价的:

    decorators = [never_cache, login_required]
    @method_decorator(decorators, name='dispatch')
    

    Docs

    【讨论】:

    • 其实我的问题是关于在请求中传递参数的最佳实践
    猜你喜欢
    • 2018-04-21
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 2020-09-22
    • 2021-09-24
    • 1970-01-01
    相关资源
    最近更新 更多