gpt4 book ai didi

django - 无需确认即可使用 DeleteView 删除模板中的对象

转载 作者:行者123 更新时间:2023-12-01 11:38:51 24 4
gpt4 key购买 nike

我正在尝试编写一个 DeleteView 来删除帖子而不显示确认页面。

Del - delete button .如何立即删除对象?

urls.py:

urlpatterns = [
# url(r'^$', views.index, name='index'),
url(
r'^feed$',
views.FeedView.as_view(),
name='feed'
),
url(r'^summary(?P<pk>\w{0,50})',
views.SummaryCreate.as_view(),
name='summary'),
url(r'^summary(?P<user_id>\w{0,50})/(?P<pk>\w{0,50})/',
views.SummaryDelete.as_view(),
name='delete_summary'),
url(r'^dashboard$',
permission_required('reed.view_dashboard')
(views.DashboardListView.as_view()),
name='dashboard'),
url(r'^dashboard/(?P<pk>\w{0,50})',
permission_required('reed.view_dashboard')
(views.DashboardUpdate.as_view()),
name='review_summary'),
]

views.py

class SummaryCreate(LoginRequiredMixin, generic.CreateView):
template_name = 'template/summary_list.html'
model = Summary
form_class = AddUrlForm
login_url = '/login_page/login/'
redirect_field_name = 'login_page'

def get_context_data(self, **kwargs):
return dict(
super(SummaryCreate, self).get_context_data(**kwargs),
summary_list=reversed(Summary.objects.filter(user_id=self.kwargs['pk']).reverse())
)

def get_success_url(self):
return reverse('summary', args=(self.request.user.id.hex,))

def form_valid(self, form):
print(self.request.user.id.hex)

url_inst = form.save(commit=False)
keywords_inst = Keywords

article = Article(form.cleaned_data['url'], language='en')
article.download()
article.parse()

title = article.title
print(title)

try:
image = article.top_image
print(image)
except Exception:
image = ''

article.nlp()

try:
keywords = article.keywords
print(keywords)
except Exception:
keywords = 'Sorry,no,keywords,found'

try:
summary = article.summary
print(summary)
except Exception:
summary = 'Sorry, no summmary found'

try:
publish_date = article.publish_date
publish_date = publish_date.date()
print(publish_date)
except Exception:
publish_date = '1900-01-01'

user = User.objects.get(id=self.request.user.id.hex)
url_inst.url=form.cleaned_data['url']
url_inst.image=image
url_inst.title=title
url_inst.summary=summary
url_inst.date=publish_date
url_inst.user_id=user
url_inst.save()
summary = Summary.objects.get(url=form.cleaned_data['url'])
#
for keyword in keywords:
new_keyword = keywords_inst(keyword=keyword, keyword_id=summary)
new_keyword.save()
#
return super(SummaryCreate, self).form_valid(form)


class SummaryDelete(SummaryCreate, generic.DeleteView):
model = Summary
pk_url_kwarg = 'pk'
slug_url_kwarg = 'pk'

def get_success_url(self):
return reverse('summary', args=(self.request.user.id.hex,))

def dispatch(self, request, *args, **kwargs):
return super(SummaryDelete, self).dispatch(request, *args, **kwargs)

template.html:

 <form action="{% url 'delete_summary' user.id.hex summary.id.hex %}" method="post">{% csrf_token %}
<h3>
<input type="submit" class="delete" aria-hidden="true" value="X">
{{summary.title}}
</h3>
</form>

我在一个模板中有 2 个类:第一个用于显示所有帖子和添加新帖子,第二个用于删除,但删除仅在页面上重定向我,这是我为 DeleteView 提供的。

最佳答案

DeleteView :

A view that displays a confirmation page and deletes an existing object. The given object will only be deleted if the request method is POST. If this view is fetched via GET, it will display a confirmation page that should contain a form that POSTs to the same URL.

您需要一个表单元素才能发送 POST 请求。

template.html:

<form id="my_form" method="post" action="{% url 'delete_summary' user.id.hex summary.id.hex %}">
{% csrf_token %}
</form>
<a href="#" onclick="document.getElementById('my_form').submit();">Del</a>

关于django - 无需确认即可使用 DeleteView 删除模板中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49130363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com