Вы смешиваете использование GET
и POST
запросов.Вы должны сделать следующее:
Либо использовать GET
запросов, затем вы должны изменить свой шаблон следующим образом:
<form method="GET" action="/customer/{{customer.customer_name}}/delete/">
<input type="submit" value="delete">
</form>
Имя должно быть частью URL, потому что вынастроил ваш urls.py
таким образом.Я не рекомендую этот способ, так как каждый может просто ввести URL customer/foo/delete
в адресную строку, чтобы удалить клиента foo
.
Другой способ - использовать post.Поэтому вам необходимо изменить шаблон URL и представление:
(r'^customer/delete/', 'quote.excel.views.delete')
def delete(request):
if request.method == "POST":
name = request.POST.get('customer', False)
if name:
Customer.objects.get(name=name).delete()
Но, поскольку кажется, что вы можете удалить только одного клиента, создавать элемент ввода select не нужно, поскольку он содержит только одно значение.
Обновление :
Чтобы сделать это для всех клиентов, вы должны получить их все в своем представлении, например, в переменной customers
и передать это вшаблон.В шаблоне вы перебираете все из них:
<form method="POST" action="/customer/delete/">
<label for="id_customer">Customer:</label>
<select name="customer" id="id_customer">
<option value="" selected="selected">---------</option>
{% for customer in customers %}
<option value="{{ customer.customer_name|escape }}">{{ customer.customer_name|escape }}</option>
{% endfor %}
</select>
<input type="submit" value="delete">
</form>
Что касается детали Шаблон Django, не отображаемый в выпадающем списке Я не знаю, что вы имеете в видуэто, может быть, вы можете уточнить, что вы хотите.