Python 重定向到引导模式,而不是error404,Django request.user
我正在处理Django中的request.user语句。 在这些时间里,我想要实现的是:Python 重定向到引导模式,而不是error404,Django request.user,python,django,twitter-bootstrap,Python,Django,Twitter Bootstrap,我正在处理Django中的request.user语句。 在这些时间里,我想要实现的是: 只有ShiftReport的“用户”(作者)(简单地说是一篇文章)才能编辑ShiftReport 到目前为止,我已经设法做到了这一点,当我作为另一个用户登录时,我收到一个错误404,而作为帖子创建者登录时,我能够编辑帖子-好极了 然而,我只想抛出一个引导模式,说访问被拒绝,而不是404错误 我的“views.py”: def update(request, shiftreport_id=None): t
- 只有ShiftReport的“用户”(作者)(简单地说是一篇文章)才能编辑ShiftReport
def update(request, shiftreport_id=None):
title = 'Edit Shift Report by'
instance = get_object_or_404(ShiftReport, pk=shiftreport_id, user=request.user)
form = shiftreportForm(request.POST or None, request.FILES or None, instance=instance)
confirm_message = None
if form.is_valid():
instance = form.save(commit=False)
instance.user = request.user
instance.save()
title = "Thanks"
confirm_message = "Shift Report has been updated!"
form = None
context = {
"title": title,
"instance": instance,
"form": form,
"confirm_message": confirm_message,
}
return render(request, 'shift/edit.html', context)
我的'detail.html':
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-center">
<li><a href="{% url 'new' %}">New Shift Report</a></li>
<li><a href="{% url 'all' %}">All Shift Reports</a></li>
{% if not request.user %}
{%if not request.user%}
有了以上声明,我可以编辑我自己的帖子,当我
要编辑其他用户的帖子。
当我将其更改为{%if request.user%}时,我的模式可以工作,但我无法编辑任何帖子,也无法编辑来自其他用户的帖子
{%else%}
{%endif%}
希望我的问题有点道理,另一方面,这个问题对我来说没有任何意义。。。非常感谢您的帮助
谢谢。尽量不要使用get\u object\u或\u 404,而是使用objects.get并在它重新运行0时手动处理响应。请更新
instance=get\u object\u或\u 404(ShiftReport,pk=ShiftReport\u id,user=request.user)
到instance=get\u object\u或\u 404(ShiftReport,pk=ShiftReport\u id)
它会工作的。嗨,Jingo,我已经试过了,相信我,我在这两件事上都找了很多。如果我执行ShiftReport.objects.get(pk=ShiftReport\u id,user=request.user),我会跑出轨道,进入一个“ShiftReport匹配查询不存在”,因为它无法识别用户id。它不会保留在我的模板上,并按照我希望的方式运行模式。如果我从参数中删除user=request.user,模板中的If语句将不再有效,我可以编辑所有帖子。。我的头已经绕了它几个小时了,很可能是我看不见的小东西,它正在给我带来麻烦aheadache@vinaykumar-如果我这样做,我可以编辑所有帖子,这不是我想要的。请参见上面的回复。@user3360412您可以比较实例。user==request.user
。并让你基于它登录。
<li><a href="#restrictedit" data-toggle="modal">Edit Shift Report Nr.{{ shiftreport.id }}</a></li>
<li><a href="#restrictdelete" data-toggle="modal">Delete Shift Report</a></li>
{% else %}
<li><a href="{% url 'detail' shiftreport.id %}edit/">Edit Shift Report Nr.{{ shiftreport.id }}</a></li>
<li><a href="#confirm" data-toggle="modal">Delete Shift Report</a></li>
{% endif %}
</ul>
<form class="navbar-form navbar-right" method="GET" action="">
<input type="text" class="form-control" name="q" placeholder="Search..." value="{{ request.GET.q }}">
</form>
</div>