Django:某些用户会收到随机的 404 错误

如何解决Django:某些用户会收到随机的 404 错误

我正面临一个我无法自己处理的奇怪问题。

在正常情况下,当用户点击一个链接时,他们会被定向到一个页面,在那里他们可以编辑他们的诱饵(对象)。但是,某些用户会收到 404 错误,但我不知道为什么,因为该页面是为大多数用户呈现的。

链接所在的html

        <div class="row justify-content-center mx-2" >
            <div class="col-12 p-0">
                <ul class="list-group text-center custom-borders m-2 p-0">
                    {% if own_hookbaits.count == 0 %}
                    <a href="{% url 'user_profile:hookbaits' request.user.fisherman.fisherman_id %}" class="list-group-item" >No hook baits yet</a>        
                    {% else %}
                        {% for hookbait in own_hookbaits %}    
                        <a href="{% url 'user_profile:hookbaits' request.user.fisherman.fisherman_id %}" class="list-group-item">{{ hookbait.name }}</a>
                        {% endfor %}
                    {% endif %}
                </ul>
            </div>

views.py

class HookBaitUpdateView(UpdateView):
    model = HookBait
    template_name = "user_profile/hookbaits.html"
    form_class = HookBaitForm

    def get_context_data(self,**kwargs):
        context = super().get_context_data(**kwargs)
        context['formset'] = HookBaitFormset(queryset=HookBait.objects.filter(fisherman=self.request.user.fisherman))
        return context

    def post(self,request,*args,**kwargs):
        formset = HookBaitFormset(request.POST)
        if formset.is_valid():
            return self.form_valid(formset)
        else:
            return self.form_invalid(formset)

    def form_valid(self,formset):
        instances = formset.save(commit=False)
        for instance in instances:
            instance.fisherman = self.request.user.fisherman
            instance.save()
        return super().form_valid(formset)

    def form_invalid(self,formset):
        return HttpResponse("Invalid")

    def get_success_url(self):
        return reverse('user_profile:profile',args=(self.kwargs['pk'],))

urls.py

app_name = "user_profile"
urlpatterns = [
    path("profile/<int:pk>/",views.ProfileView.as_view(),name="profile"),path("profile/<int:pk>/hookbaits/",views.HookBaitUpdateView.as_view(),name="hookbaits"),]

渲染的 html

<div class="row justify-content-center m-0">
    <div class="col-12 col-md-6 col-lg-4 p-0">
        <div class="row mx-3 my-3 justify-content-center text-center">
            <div class="card p-2 custom-borders">
                <div class="card-body p-2">
                    <form method="POST">
                        {% csrf_token %}
                        <table class="d-flex justify-content-center">
                            {{ formset.management_form }}
                            {% for form in formset %}
                            <tr class="formset_row">
                                {% for field in form.visible_fields %}
                                <td class="pb-2">
                                    {% if form.instance.pk %}{{ form.DELETE }}{% endif %}
                                    
                                    {% if forloop.first %}
                                    {% for hidden in form.hidden_fields %}
                                        {{ hidden }}
                                    {% endfor %}
                                    {% endif %}
        
                                    {{ field.errors }}
                                    {{ field }}
                                </td>
                                {% endfor %}
                            </tr>
                            {% endfor %}
                        </table>
                        <input type="submit" class="btn btn-primary w-50 mt-1" style="background-color: #00754B;" value="Mentés">
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>

有什么建议可以解决吗?谢谢!

解决方法

有一些可能性

  1. 点击了错误的链接,就像您尝试访问此 URL profile/25/hookbaits/ 并且在数据索引中没有 id 为 25 的 HookBait
  2. 在 HookBaitUpdateView 你试图得到 queryset=HookBait.objects.filter(fisherman=self.request.user.fisherman) 也许没有与 user.fisherman 相关联的 hookbait 404 页面主要在您调用 get_object_or_404(HookBait,pk=25) 时提供 和更新视图可能会调用这个方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?