如何使用预先填充的一个值加载表单?

时间:2016-10-21 05:23:13

标签: python django html5 django-models django-forms

我使用Django表单来收集用户的信息。但是当我在页面之间切换时,我想使用url中的一个值显示在下一页的from中。 例。 我有网页查看一本书 http://127.0.0.1:8000/checkout/780374157067

780374157067是本书中的ibn

下一页有一个表单,我可以获取用户的ISBN和卡ID。如何使用ISBN填写表单并向用户显示表单。而不是用户再次提供ISBN。 enter image description here

提交的ISBN应该预先填写网址中的isbn。

HTML:

<div class ="col-md-3">
        <form method='POST' action=''>{%csrf_token%}
           {{template_form | crispy}}
           <input class="btn btn-lg btn-primary" type='submit'
                   value='Submit'/>
        </form>
</div>

Forms.py

class loansform(forms.Form):
    Isbn = forms.IntegerField()
    Card_id = forms.IntegerField()
    def clean_Isbn(self):
        isbn = self.cleaned_data.get("Isbn")
        isbn_string = str(isbn)
        if len(isbn_string) != 13:
            raise forms.ValidationError("Enter a valid ISBN-13")
        return isbn

views.py

template_form = loansform();

2 个答案:

答案 0 :(得分:2)

在您的视图中,您可以首先在表格中输入初始数据从网址获取参数然后:

data = {'isbn': 154646486,}
form = Myform(initial=data)
在urls.py中

url(r'^checkout/(?P<isbn>\d+)/$',check_page)

查看示例:

def check_page(request, isbn):
     data = {'isbn': isbn,}
     form = Myform(initial=data)
     template = 'mytem.html'
     context = {'form': form,}
     return render(request, template, context)

答案 1 :(得分:1)

说你有像

这样的网址
url(r'^checkout/(?P<isbn>\d+)/$')

在您的视图中,当您实例化表单类时,请像这样提供初始数据。

form = YourFormClass(initial={'isbn': kwargs['isbn']})

kwargs包含url参数,因此您可以从url获取isbn。