如何将url中捕获的值传递给html页面?

时间:2016-02-04 02:59:13

标签: python django django-forms

我不知道如何将值从url传递到UpdateView。然后我需要将该值传递给我的html页面。

urls.py中的对应行,

url(r'^poi/edit/(?P<pk>\d+)', POIFormUpdateView.as_view(), name='POIform-edit')

views.py

class POIFormUpdateView(UpdateView):
    model = PointOfInterest
    fields = ['name', 'vip', 'category', 'place', 'latitude', 'longitude', 'picture', 'website', 'description', 'phone', 'email']
    template_name_suffix = '_update_form'

    def get(self, request, *args, **kwargs):
        print 'On POI get method'
        print kwargs
        super(POIFormUpdateView, self).get(request, *args, **kwargs)

在这里,我尝试重写get方法,kwargs打印出预期的字典,但我不知道如何将该字典传递给我的update_form.html文件。

update_form.html

<form role="form" method="POST" action="/poi/edit/{{ pk }}" class="post-form form-horizontal">{% csrf_token %}
            <!-- customizing form -->
            {{ form|crispy }}
            <!-- End of customization -->

            <button type="submit" class="save btn btn-default btn-primary center-block">Save</button>

        </form>

我也尝试过从名称中获取网址,

<form role="form" method="POST" action="{% url 'POIform-edit' %}"

但这也行不通。

2 个答案:

答案 0 :(得分:1)

将参数对象ID添加到url:

<form role="form" method="POST" action="/poi/edit/{{ object.pk }}/" class="post-form form-horizontal">

ClassBasedView passes model_name as context_object,它应该成为:

<form role="form" method="POST" action="/poi/edit/{{ pointofinterest.pk }}/" class="post-form form-horizontal">

答案 1 :(得分:0)

我使用<input type='hidden' name='***' value="/poi/edit/{{ pk }}" />将此值传递给请求。然后在def get():中,您可以使用类似myurl=request.POST.get('***')

的内容来获取此内容