在 createView Class 中访问 django 模板 url 标签的 url 参数

accessing url parameters of django template url tag in createView Class

我想根据{% url %}标签中传递的url参数,在django createView class中预填充(初始)某个表单字段。我不知道如何在 createView class 的 get_initial(self) 方法中选择传递的 url 参数。当我硬编码某个值时,它起作用了。

html是这样的:

{% for object in model.objects_set.all %}
  {% subobject in objectmodel.subobjects_set.all%}
    <a href="{% url 'url_name' object.id %}">Create SubObject</a>
  {% endfor %}
{% endfor %}

views.py 就是这样(我错过了 ??? 部分):

class SubObjectCreateView(generic.CreateView):
model = SubObject
...

def get_initial(self):
    return {'object': ???}

urls.py 就像:

path('subobject/<int:something>', views.SubObjectCreateView.as_view(), name='url_name')

url参数可以通过kwargs属性访问,所以你可以这样写:

class SubObjectCreateView(generic.CreateView):
   model = SubObject
   ...

   def get_initial(self):
      return {'object': self.kwargs['something']}  # Replace 'something' with the name of the url parameter

您可以使用

访问 url 参数
print(self.kwargs)

所以,我建议你打印 self.kwargs 看看你有什么。

之后,您可以像这样使用 kwargs

class SubObjectCreateView(generic.CreateView):
model = SubObject
...

def get_initial(self):
    my_param = self.kwargs["something"]
    return {'object': my_param}