Переменная 'name' в форме шаблона django - PullRequest
0 голосов
/ 24 мая 2011

У меня есть следующий шаблон, в котором есть кнопки «добавить» и «удалить»:

<tr>
    <td>Position</td>
    <td>{{ form.position }}<input type="submit" value="add" , name='add'/></td>
</tr>
<tr>
    <td> </td>
    <td>
        {% for position in positions %}
        {{ position}}<input type="submit" value="Delete", name="delete-position.{{ position }}"/> 
        {% endfor %}
    </td>
</tr>

Как мне построить функцию views.py, чтобы найти значение name для Deleteкнопка отправки?В настоящее время у меня есть:

    try:
        request.POST['add']
        positions.append(request.POST['position'])          
        return render_to_response('registration/getting_started_info1.html', {'form': form, 'positions': positions}, context_instance = RequestContext(request))
    except: 
        if 'delete-position' in request.POST:
            positions.remove(### how to get name of Delete submit? ###)
            return render_to_response('registration/getting_started_info1.html', {'form': form, 'positions': positions}, context_instance = RequestContext(request))

Кроме того, есть ли лучший способ построить представление / шаблон, чтобы я мог использовать if...else вместо try...except?

Ответы [ 3 ]

1 голос
/ 24 мая 2011

Во-первых, вы, вероятно, должны сделать это:

if request.method == "POST":
    if 'add' in request.POST.keys():
        positions.append(...)
        return render_to_response(...)
    else:
        for k, v in request.POST.items():
            if k.startswith('delete-position'):
                positions.remove(k)
                return render_to_response(...)

Это должно помочь с тем, что вы спрашиваете ... однако, я не уверен, что это самый простой способ сделать то, что вы пытаетесь сделать.

0 голосов
/ 24 мая 2011

Ваш пробный улов довольно странный. Вероятно, вам следует отправлять запросы на удаление в другое представление.

Но что касается того, как вы можете получить delete-position vars, это просто:

def delete(request):
    if request.method == "POST":
        for key in request.POST.keys():
            if key.startswith('delete-position'):
                positions.remove(request.POST[key])
0 голосов
/ 24 мая 2011

Сохранить позиции в сеансе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...