如何用网址部分预填充Django表单?
我刚开始学习编程(Django),现在想在一个django_messages表单里预先填入网址的一部分。
比如说,在www.mywebsite.com/compose_root/Chris88这个页面上,我希望“收件人”这个字段能自动填上“Chris88”。
有没有什么办法可以做到这一点?在urls.py文件里,我有:
url(r'^compose_root/(<recipient>[\w.@+-]+)/$', compose, name='messages_compose_to'),
我之前试过在“收件人”表单字段里直接填入初始值,但没成功,所以我觉得直接用网址的一部分来填可能更简单。
非常感谢大家的帮助。
2 个回答
0
假设你有一个叫做 DjangoMessages
的表单类,你可以修改它里面的 get_form(self)
方法。你需要获取表单的字段,然后把它的 initial
值设置为网址参数中的 recipient
。
class DjangoMessages(Form):
def get_form(self):
form = super().get_form()
form.fields['recipient'].initial = self.kwargs['recipient']
1
假设你有一个表单,长得像这样:
class New_form(Form.form):
... FormStuff
recipient = Some Field
然后添加一个看起来像这样的视图:
def compose_root(request,recipient):
...# View Stuff
form = New_form(initial={"recipient": recipient})
return render_to_response('form-template.html', {'form':form})
在你的表单模板中:
{{form}}