首页 > 解决方案 > 将参数从视图传递到锚标记的最佳方法是什么?

问题描述

我正在构建一个仪表板,该仪表板在侧边栏上有一个按钮,允许用户更新他们的数据。目前看起来像这样:

<a class="nav-link" href="{% url 'form-update' pk=id %}"> Questionnaire </a>

我正在尝试将该id字段连接到我的views.py

def dashboard(request):
    user = request.user
    account = 0
    id = Form.objects.filter(author=user,account=account).values('id').get('id')
    context = {
        'id':id
    }
    return render(request, 'dashboard/index.html',context)

网址模式:

path('update/<int:pk>', FormUpdateView.as_view(),name='form-update')

我不确定将此数据发送到 href 标签的最佳方式?

编辑 这似乎是一个问题,因为此仪表板 html 文件是我与其他模板一起使用的基本 HTML 文件。如果我在子模板中加载数据而不是加载正常,而不是在父 html 文件中加载。

标签: djangodjango-views

解决方案


如果有人偶然发现这一点,那么问题实际上来自将变量传递给基本 HTML 文件。在这种情况下,您必须在您的应用程序 ( context_processors.py) 中创建一个文件,然后在其中创建一个函数:

def add_variable_to_context(request):
user = request.user
account = 0
pk = Form.objects.filter(author=user,account=account).values('id').last().get('id')

return {
    'id': pk
}

settings.py然后在context_processors中注册这个 py 文件。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'dashboard.context_processors.add_variable_to_context',
            ],
        },
    },
]

然后,您可以以正常方式调用该变量。

 <a class="nav-link" href="{% url 'form-update' pk=id %}">Questionnaire</a>

推荐阅读