django - 是否可以在没有 kwargs 的情况下在 django 中定义 success_url
问题描述
我正在详细说明 django 文档中的教程以构建投票应用程序。我试图实现的是能够删除候选人,并在成功时返回选举的详细信息。我知道我可以向 url 添加另一个参数,例如(下面的完整模板)
<a href="{% url 'candidate_delete' c.id object.id %}" class="btn btn-danger fa fa-trash" class></a>
我想知道是否可以使用 post 方法(虽然没有表格)。我做了一些研究,找到了“下一个”参数,但没有通过。看起来它需要一个表单,因为所有示例都在表单中使用“下一个”。
我还尝试根据要删除的候选人是 ForeignKey-d 的选举设置success_url,但这会产生错误:
在 /elections/candidate/delete/13/ 中配置不当 包含的 URLconf '1' 似乎没有任何模式。如果您在文件中看到有效模式,则问题可能是由循环导入引起的。
这是视图:
class CandidateDelete(LoginRequiredMixin, DeleteView):
model = Candidate
template_name = 'election/delete.html'
def get_object(self):
obj = super().get_object()
print(self.request.POST)
election = Election.objects.get(id=obj.poll_id)
if not election.owner_id == self.request.user.id:
raise Http404
return obj
def get_success_url(self, **kwargs):
obj = super().get_object()
election = Election.objects.get(id=obj.poll_id)
return reverse_lazy('election_detail', election.id)
选举细节模板
{% extends 'base.html' %}
{% block content %}
{{object.name}} -
<ul>
{% for c in candidate_list %}
<h2>{{ c.name }}</h2>
<li> {{ c.intro }} {{c.id}}
{{c.email}}
<a href="{% url 'candidate_delete' c.id %}" class="btn btn-danger fa fa-trash" class></a> <input type="hidden" name="next" value={{object.id}} />
</li>
{% endfor %}
<a href="{{ request.META.HTTP_REFERER }}" class="btn btn-primary" class>Back</a>
</ul>
{% endblock %}
模板中的对象是候选人链接到的选举。
如您所见,我尝试了 post 方法,但是,环顾四周,它似乎只能以一种形式工作。success_url 配置也会引发错误。
非常感谢使用 post 方法或使用模型数据配置 get_success_url 的任何帮助。
解决方案
因此,显然, reverse_lazy 必须看起来像这样:
def get_success_url(self, **kwargs):
obj = super().get_object()
election = Election.objects.get(id=obj.poll_id)
return reverse_lazy('election_detail', kwargs={'pk':election.id})
在模板中,您可以只添加 var,在返回函数中您必须指定它是一个 kwargs。
我几乎可以肯定“选举= ..”可以更短,但那是为了以后
推荐阅读
- python - 如何在维基百科页面中抓取一页的多个表格?
- c - 结构指针奇怪的行为
- monitoring - 在服务结构上部署日内瓦监控代理时,MetricsExtension.Native.Exe 未运行
- gcc - C 和
文件 - java - Tomcat Servlet:src/main/webapp/WEB-INF 时为 404 状态,root/WEB-INF 时没有错误
- python - 如何将列表中的分隔符从“,”更改为“;” 不使用连接功能或任何列表操作
- r - R:计算总和小于给定值的三元组
- python - 如何基于另一个 DataFrame 中的列在 Pandas DataFrame 中创建新列?
- kubernetes - Pod 无法在 GKE 上访问自己的 IP
- r - 使用 R 中的 rvest 将网页抓取的表格保存在 csv 中