【问题标题】:How to store Global variable in Django view如何在 Django 视图中存储全局变量
【发布时间】:2020-01-16 21:41:01
【问题描述】:

Django 视图 中,是否可以创建一个 全局/会话变量 并在视图中分配一些值(例如,通过 Ajax 调用发送)并使用另一种观点

我试图实现的场景是这样的:

View view1 获取一些通过 Ajax 调用发送的可变数据:

def view1(request):
    my_global_value = request.GET.get("data1", '')    # Storing data globally

然后,存储的变量在另一个视图中使用,view2

def view2(request):
    my_int_value = my_global_value    # Using the global variable

【问题讨论】:

    标签: django django-templates django-views global-variables


    【解决方案1】:

    你可以使用SessionDjango Docs

    来自 Django 的一些示例:

    def post_comment(request, new_comment):
        if request.session.get('has_commented', False):
            return HttpResponse("You've already commented.")
        c = comments.Comment(comment=new_comment)
        c.save()
        request.session['has_commented'] = True
        return HttpResponse('Thanks for your comment!')
    

    编辑 MIDDLEWARE 设置并确保它包含 'django.contrib.sessions.middleware.SessionMiddleware'

    您的request.session.get("key") 也可以在任何其他视图中访问。

    【讨论】:

    • 正如我在查询中解释的那样,我想在 view1 的变量中存储(分配)一些值,然后使用存储在另一个视图中的值,view2.
    • 是的,您也可以在任何其他视图中使用它
    【解决方案2】:

    您可以使用Sessions,但最好在使用完后将其删除。否则,它将在会话中持续存在。

    def index(request):
        task_created = ""
        if 'task_created' in request.session:
            task_created = request.session['task_created']
            del request.session['task_created']
        ...
    
    
    def create_task(request):
        ...
        request.session['task_created'] = "ok"
        return redirect('index')
    

    【讨论】:

    • 如果我使用您的示例,create_task 是我存储变量 task_created 并传递值 1234 的函数(在您的示例中为“ok”)给它。现在,我可以在函数index 中访问变量的值1234 吗?尝试执行此操作时出现错误:django.urls.exceptions.NoReverseMatch: Reverse for 'index' not found. 'index' is not a valid view function or pattern name需要做什么?
    • index 是你的路径的名称,你应该在你的urls.py 中声明它:path('index/', views.index, name='index')
    猜你喜欢
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 2016-01-24
    相关资源
    最近更新 更多