我是Django noob并担心我的问题的答案相当明显,但希望有人可以提供帮助。
我正在构建一个在每个页面上包含相同表单的应用程序,表单周围的内容和表单数据所依赖的模型实例依赖于URL中传递的值。使用URLconf中的标准Form类和(URL,'template.html',myapp.view)可以正常工作,如下所示:
url(r'^listings/(?P<listing_id>\d+)/submit$', 'myapp.views.lister'),
但是,使用FormPreview,而不是调用URLconf中的视图,而是调用带有视图功能的子类。
url(r'^listings/(?P<listing_id>\d+)/submit$', PickFormPreview(PickForm)),
从我可以从文档中收集的内容,FormPreview使用parse_params将URL中捕获的值传递给state.self,我相信这是一个字典。不幸的是,鉴于我的经验水平,我无法从这个准确的方法中弄清楚如何自定义我的FormPreview子类如何将URL中捕获的listing_id传递给FormPreview调用的form.html模板中的模板变量。我是否需要覆盖parse_params?或者以某种方式传递state.listing_id?还是我完全错过了?
任何帮助非常感谢!
答案 0 :(得分:0)
你走在正确的轨道上。 parse_params
中的FormPreview
方法没有做任何事情,但它是在子类中重写的正确方法。
以下示例将listing_id
保存到模板上下文中可用的self.state.listing_id
。
class PickFormPreview(FormPreview):
def parse_params(self, *args, **kwargs)
"""
Saves listing_id from the url to state
"""
self.state['listing_id'] = kwargs['listing_id']
然后在您的模板中,您将其访问为:
列出{{state.listing_id}}