如何解决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>
有什么建议可以解决吗?谢谢!
解决方法
有一些可能性
- 点击了错误的链接,就像您尝试访问此 URL profile/25/hookbaits/ 并且在数据索引中没有 id 为 25 的 HookBait
- 在 HookBaitUpdateView 你试图得到 queryset=HookBait.objects.filter(fisherman=self.request.user.fisherman) 也许没有与 user.fisherman 相关联的 hookbait 404 页面主要在您调用 get_object_or_404(HookBait,pk=25) 时提供 和更新视图可能会调用这个方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。