Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python: Web
Войти
Регистрация
Восстановить пароль
 
Baac
0 / 0 / 2
Регистрация: 09.03.2013
Сообщений: 37
1

Освоить удаление данных из БД методом POST

31.03.2016, 18:17. Просмотров 276. Ответов 9
Метки нет (Все метки)

Добрый день!
Пытаюсь освоить удаление данных из бд методом POST ( Знаю, что в django есть такая вещь как Form, но хочу попробовать сперва сделать это сам)

Вот содержание:
views.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from django.shortcuts import render
from django.http import HttpResponseRedirect, HttpResponse
from .models import News
 
from django.core.urlresolvers import reverse
# Create your views here.
 
def news(request):
    listNews =  News.objects.all()
    context = {'listNews': listNews}
    return render(request, 'news/index.html', context)
 
def delete(request):
    delNews = request.POST['news']
    d = News.objects.filter(id=delNews).delete()
    return reverse('news:delete', kwargs={'news.id'})
urls.py
Python
1
2
3
4
5
6
7
8
9
from django.conf.urls import url
from . import views
 
 
app_name='news'
urlpatterns = [
    url(r'^$', views.news, name='news'),
    url(r'^delete/$', views.delete, name='delete'),
]
index.html
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{% if listNews %}
<form action="{% url 'news:delete' news.id %}" method="post">
{% for news in listNews %}
{% csrf_token %}
    <h4>{{news.title}}</h4>
    {{news.text}}
    {{news.author}}
    {{news.date}}
    <input type="text" name="news" id="news{{ forloop.counter }}" value="{{ news.id }}" />
    <input type="submit" />
{% endfor %}
</form>
<p>No news avaliable</p>
{% endif %}
Собственно при загрузке страницы получаю следуюшию ошибку:
Reverse for 'delete' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['$delete/$']
Помогите исправить и сказать, где я ошибку допустил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2016, 18:17
Ответы с готовыми решениями:

Передача данных методом POST
с помощью этого скрипта он авторизируется на сайте. но комментарий не...

Как войти на сайт методом POST?
Могли бы показать на примере -...

Как передать id сообщения методом post на его удаление?
Здравстуйте. У меня есть форма, куда циклом из бд подгружаются сообщения...

Удаление данных из POST
Есть страница, которая сама себе отправляет текст методом POST, но когда...

Отправка данных методом post
Здравствуйте, помогите решить такую проблему- есть html форма в файле...

9
arctblake
50 / 50 / 17
Регистрация: 03.12.2015
Сообщений: 167
31.03.2016, 18:31 2
У вас delete не принимает аргументов, а Вы ему передаете id. Вы там забыли сохраняющую группу сделать в регулярке
0
Baac
0 / 0 / 2
Регистрация: 09.03.2013
Сообщений: 37
31.03.2016, 18:33  [ТС] 3
А можете указать, как это сделать, я только начинаю и не совсем вас понял.
0
arctblake
50 / 50 / 17
Регистрация: 03.12.2015
Сообщений: 167
31.03.2016, 18:34 4
И еще вы начинаете цикл после того, как уже используете news. Сначала надо начать цикл, а то откуда у Вас news-то взялось во второй строчке шаблона?
0
Baac
0 / 0 / 2
Регистрация: 09.03.2013
Сообщений: 37
31.03.2016, 18:35  [ТС] 5
А можете указать, как это сделать, я только начинаю и не совсем вас понял.
0
arctblake
50 / 50 / 17
Регистрация: 03.12.2015
Сообщений: 167
31.03.2016, 18:40 6
r'^delete/(\d+)/$'

И сама вьюха у Вас должна принимать доп. аргумент. То есть укажите в списке параметров помимо request, например, id.

Добавлено через 4 минуты
Вообще у Вас там что-то странное. Вы хотите, чтобы на стр высвечивались сразу все новости, а Вы могли вести номер новости, которую нужно удалить и нажать кнопку?
0
Baac
0 / 0 / 2
Регистрация: 09.03.2013
Сообщений: 37
31.03.2016, 18:42  [ТС] 7
Это будет следующий шаг, я бы хотел сперва с таким способом разобраться
0
arctblake
50 / 50 / 17
Регистрация: 03.12.2015
Сообщений: 167
31.03.2016, 18:42 8
И почему вьюха возвращает reverse? Прочитайте оф туториал, он неплохой
0
Baac
0 / 0 / 2
Регистрация: 09.03.2013
Сообщений: 37
31.03.2016, 18:43  [ТС] 9
Вот я и почитал и на stack заходил и там написано, что надо reverse брать
0
TimeTwo
72 / 72 / 97
Регистрация: 29.11.2009
Сообщений: 330
01.04.2016, 15:25 10
Baac, плохо читали, так советуют
Python
1
2
return HttpResponseRedirect(reverse('settest:question',  
                                        kwargs={'test_id':test_id,}))
Добавлено через 6 минут
Цитата Сообщение от Baac Посмотреть сообщение
delNews = request.POST['news']
сдесь вы принимаете с POST запроса `news`,а здесь
Цитата Сообщение от Baac Посмотреть сообщение
<input type="text" name="news" id="news{{ forloop.counter }}" value="{{ news.id }}" />
передаете не `news` а `news"цифра"` ... странно не правда ли ? и зачем тип инпута 'text' ?

а ошибка банально в этой строке :
Цитата Сообщение от Baac Посмотреть сообщение
<form action="{% url 'news:delete' news.id %}" method="post">
потому что вы банально передаете id зачем то ,но не получаете его ... ни в урл ни во вьюхе... а собственно зачем он вам, если вы используете форму ?
0
01.04.2016, 15:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2016, 15:25

Передача данных методом POST
Приветствую!! Есть две обычные формы, В первой есть текстовое поле:...

Отправка данных методом POST
Добрый день. Подскажите пожалуйста,имеется следующий код: &lt;form...

Perl. Получение данных методом POST
Привет. Помогите пожалуйста. Не могу понять в чем проблема Я создал два файла:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru