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

如何在Django CreateView类中获取模板url标签传递的URL参数

解决方案

Django 基于类的视图中,所有在urls.py中定义的路径参数都会被解析后存入视图实例的self.kwargs字典属性中,你可以直接在get_initial方法中调用该属性获取参数值。

代码修改示例

1. 直接适配现有代码(保留当前urls.py的参数名)

你的urls.py中定义的路径参数名为something,直接从self.kwargs中取对应key的值即可:

# views.py
class SubObjectCreateView(generic.CreateView):
    model = SubObject
    # 其他原有配置...

    def get_initial(self):
        # 先调用父类方法获取默认初始值,避免原有逻辑被覆盖
        initial = super().get_initial()
        # 从URL路径参数中取值赋值给指定字段
        initial['object'] = self.kwargs['something']
        return initial

2. 优化建议(语义化参数名,提升代码可维护性)

建议把urls.py中的参数名改为和业务含义匹配的名称,避免后续维护混淆:

# urls.py修改后
path('subobject/<int:object_id>', views.SubObjectCreateView.as_view(), name='url_name')

对应views.py中的取值逻辑修改为:

initial['object'] = self.kwargs['object_id']

补充说明

  • 如果object是SubObject的外键字段,直接传入关联对象的主键值即可,Django表单会自动完成外键关联匹配
  • 模板中的传参逻辑不需要修改,{% url 'url_name' object.id %}已经正确把object.id作为路径参数传入URL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:24:05