如何用网址部分预填充Django表单?

1 投票
2 回答
1113 浏览
提问于 2025-04-18 16:20

我刚开始学习编程(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}}   

撰写回答