在 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}
我想根据{% 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}