Python 重定向到引导模式,而不是error404,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

我正在处理Django中的request.user语句。 在这些时间里,我想要实现的是:

  • 只有ShiftReport的“用户”(作者)(简单地说是一篇文章)才能编辑ShiftReport
到目前为止,我已经设法做到了这一点,当我作为另一个用户登录时,我收到一个错误404,而作为帖子创建者登录时,我能够编辑帖子-好极了

然而,我只想抛出一个引导模式,说访问被拒绝,而不是404错误

我的“views.py”:

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>