首页 > 解决方案 > 使用参数“(”帐户//',)' 未找到。尝试了 1 种模式:['accounts/(?P[0-9]+)/$']

问题描述

在我的博客中,我希望当有人点击阅读更多时,它应该将该人引导到登录页面,这工作正常,然后在输入登录凭据后,它应该将该人带到详细页面,这就是我我得到了上面的错误。

这是代码 urls.py

from . import views
from django.urls import path
from.views import Home, Detail, CreatePost

urlpatterns = [
    path('', Home.as_view(), name='home'),
    path('register/', views.register, name='register'),
    path('login/', views.login, name='login'),
    path('logout/', views.logout, name='logout'),
    path('post/', CreatePost.as_view(success_url='/'), name='post'),
    path('accounts/<int:pk>/', Detail.as_view(), name='detail'),
]

下面的行来自entry_list.html <a href="{% url 'login' %}" class="btn btn-primary btn-sm">Read More &rarr;</a>

然后下面是我的登录逻辑``` def login(request):

    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']

        user = auth.authenticate(username=username, password=password)

        if user is not None:
            auth.login(request, user)
            return redirect('detail', 'accounts/<int:pk>/')
        else:
            return redirect('login')
    else:
        return render(request, 'login.html')
 ```

标签: django

解决方案


path('accounts/<int:pk>/', Detail.as_view(), name='detail')

在该 url 定义中,<int:pk>是用户 ID 的占位符;它实际上不是 url 的一部分。

要重定向到 url,您必须提供用户 ID:

return redirect('detail', pk=user.id)

推荐阅读