重定向到Bootstrap模式而不是error404,Django request.user

时间:2017-02-26 13:55:06

标签: python django twitter-bootstrap

我正在努力处理Django中的request.user语句。 通过那些我想要实现的所有时间是:

  • 只有"用户" (作者)ShiftReport(只是一个帖子)应该能够编辑ShiftReport。

到目前为止,我已设法做到这一点,当我作为另一个用户登录时,我收到错误404,而作为帖子创建者登录,我能够编辑帖子 - 太棒了!

然而,不是那个404错误,我只想抛出一个Bootstrap模式,说拒绝访问。

我的观点.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;':

<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 %}
  

上面的语句我可以编辑自己的帖子,当我得到Error404   想要编辑其他用户的帖子。   当我将其更改为{%if 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>

希望我的问题构建有点意义,另一方面问题对我没有任何意义......会感激任何帮助。

感谢。

0 个答案:

没有答案