You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django开发中如何将index视图的link上下文传递给其他视图函数

Django上下文参数传递实现方案

前置修正:修复现有代码错误

你当前index视图的context赋值存在逻辑错误,将查询集变量写成了固定字符串,会导致模板无法遍历数据,先修正:

# views.py index视图修正后
def index(request):
    listing = fields.objects.all()
    context ={'listing': listing}
    return render(request,'index.html',context)

步骤1:配置bypass_link路由

我们优先采用传递数据ID的方式实现参数传递,避免直接传递链接出现特殊字符截断、非法参数等问题,修改urls.py:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',index,name="index"),
    # 新增路由,接收fields表的记录ID作为参数
    path('bypass/<int:field_id>/', bypass_link, name="bypass_link"),
]

步骤2:完善bypass_link视图逻辑

在视图中接收路由传递的ID,查询对应链接后执行你的自动化操作:

from django.shortcuts import get_object_or_404, redirect
from .models import fields

def bypass_link(request, field_id):
    # 校验ID合法性,获取对应link
    field_item = get_object_or_404(fields, id=field_id)
    target_link = field_item.link
    
    # 此处写入你的selenium自动化操作代码
    # 自动化执行完成后如果需要跳转到原链接,添加下面的重定向逻辑
    return redirect(target_link)

步骤3:调整模板跳转链接

修正你模板中url标签的语法错误(标签内不能有多余空格),传入ID参数:

{% for i in listing %}
<tr>
<td data-label="name">{{ i.name }}</td>
<td data-label="Quote">
    <button>
        <a href ="{% url 'bypass_link' field_id=i.id %}" target="_blank">{{ i.link }}</a>
    </button>
</td>
<tr>
{% endfor %}

补充说明

如果确实需要直接传递链接参数,可将路由改为path('bypass/', bypass_link, name="bypass_link"),模板中以GET参数形式传递<a href ="{% url 'bypass_link' %}?link={{ i.link|urlencode }}",视图中通过request.GET.get('link')获取参数,但该方式容易出现参数被截断、注入风险,不推荐使用。

内容的提问来源于stack exchange,提问作者Rikky Bhai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:45:03