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

Django中如何根据锚点标签配置对应动态URL跳转

实现方案

总共调整3处代码即可,核心是给列表页路由加动态路径参数,模板跳转时传入对应平台值:

  • 调整urls.py路由规则
    原有的listingpage路由没有匹配动态路径段,增加命名正则分组捕获平台名,传给对应视图:
    app_name='listing'
    from django.conf.urls import url
    from . import views
    
    urlpatterns = [
        url(r'^listing/select/$', views.platformselect, name='listingselect'),
        # 捕获listing/后的平台名字符串,参数名固定为platform_name传给视图
        url(r'^listing/(?P<platform_name>[\w-]+)/$', views.listingpage, name='listingpage'),
    ]
    
  • 调整views.py的视图函数
    给listingpage视图增加形参接收路由传过来的平台名,可按需加平台合法性校验:
    from django.http import Http404
    
    def platformselect(request):
        return render(request,'listing/platform_select.html')
    
    # 形参名必须和路由里的分组名完全一致
    def listingpage(request, platform_name):
        # 可选:校验平台是否合法,非法请求直接返回404
        if platform_name not in ['amazon', 'ebay', 'google']:
            raise Http404("对应平台页面不存在")
        # 后续可根据platform_name的值加载对应平台的业务数据,再传给模板渲染
        return render(request, 'listing/listingpage.html', {'platform': platform_name})
    
  • 调整平台选择页模板的跳转链接
    注意你代码里视图返回的模板路径是listing/platform_select.html,和你写的platform_selection.html文件名不一致,以你实际项目里的模板文件名为准,模板内的a标签跳转时传入对应平台参数即可:
    <a href="{% url 'listing:listingpage' platform_name='amazon' %}">amazon</a>
    <a href="{% url 'listing:listingpage' platform_name='ebay' %}">ebay</a>
    <a href="{% url 'listing:listingpage' platform_name='google' %}">google</a>
    

改完之后,点击对应平台链接就会跳转到/listing/amazon、/listing/ebay、/listing/google这类地址,视图里也能拿到当前访问的平台标识做后续逻辑处理。如果不需要url末尾的斜杠,把路由正则最后的/$改成$即可,不过Django默认开启APPEND_SLASH配置,保留末尾斜杠可以避免不必要的重定向。

内容的提问来源于stack exchange,提问作者Ahmet Yılmaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:57:25