在Django得到404。甚至用户也存在于数据库中

2024-10-02 02:25:21 发布

您现在位置:Python中文网/ 问答频道 /正文

嗯,我得到404错误,即使我的用户存在于数据库中,我试图解决这个问题,但我不能你们帮我。我真的需要帮助

notes/views.py

class NotesListView(LoginRequiredMixin,ListView):
    login_url = '/accounts/login/'
    model = Notes
    context_object_name = 'notes_data'
    # paginate_by = 
    def get_queryset(self):
        user = get_object_or_404(auth.models.User, username=self.kwargs.get('username'))  
        return Notes.objects.filter(author=user).order_by('-create_date')

如果我注释掉用户行,并在返回行中用用户主键替换用户变量,那么它将显示与该用户相关的所有注释。但很明显,我不能在视图或每个用户中使用相同的主键,所以我需要抓取特定用户并向他显示其注释列表。我无法做到这一点。我需要点帮助你们能帮我吗

notes/URL.py

app_name = 'notes'

urlpatterns = [
    path ('create/',views.NotesCreateView.as_view(),name = 'notes_create'),
    path ('detail/<int:pk>',views.NotesDetailView.as_view(),name = 'notes_detail'),
    path('list/<str:username>',views.NotesListView.as_view(),name='notes_list'),
    path('delete/<int:pk>',views.NotesDeleteView.as_view(),name='notes_delete'),
    path('update/<int:pk>',views.NotesUpdateView.as_view(),name ='notes_update'),
]

Tags: path用户namepyviewgetascreate
2条回答

我想你是在拿这样的笔记:/list?username=myuser 在这种情况下,您可以从request对象中检索username参数,如下所示:

def get_queryset(self):
        user = get_object_or_404(auth.models.User, username=self.request.GET.get('username'))
        return Notes.objects.filter(author=user).order_by('-create_date')

您已经在URL.py中声明了以下模式

path('list/', views.NotesListView.as_view(), name='notes_list')

但是在您的视图中,您正试图通过self.kwargs.get('username')通过url参数获取用户名

如果要访问username,需要使用参数调用url:

  • 127.0.0.1:8000/list/bob/

然后重写您的urlpattern,这样它就可以接受bob作为username参数:

path('list/<str:username>/', views.NotesListView.as_view(), name='notes_list')

然后在self.kwargs中,您将拥有{'username': 'bob'}

另一种方法是使用GET而不是URL参数

因此,如果你打电话:

  • 127.0.0.1:8000/list?username=bob

您将通过self.request.query_params.get('username')获得它

相关问题 更多 >

    热门问题