在 URL 中显示用户名 - Django

Display username in URL - Django

当我尝试在 URL 中显示用户名时,出现此错误:

'account_home' 的反转,未找到参数“()”和关键字参数“{}”。尝试了 1 种模式:['/(?P\w+)/$'].

这是我的 views.py

@login_required
def account_home(request, username):
    u = MyUser.objects.get(username=username)
    return render(request, "accounts/account_home.html", {})

这是我的 urls.py

urlpatterns += patterns('accounts.views',
    # url(r'^account/$', 'account_home', name='account_home'),
    url(r'^/(?P<username>\w+)/$', 'account_home', name='account_home'),
    url(r'^logout/$', 'auth_logout', name='logout'),
    url(r'^login/$', 'auth_login', name='login'),
    url(r'^register/$', 'auth_register', name='register'),
)

这是它试图呈现的代码,但无法呈现。

提前感谢您的帮助!

简短回答:问题出在您的模板代码上。您没有将 username 参数传递给您的视图。而不是

<a href="{% url 'account_home' %}">Account<a>

尝试

<a href="{% url 'account_home' user.username %}">Account<a>

长答案:话虽如此,您可能可以通过修改视图来摆脱 username 参数。您已经在视图的 request 对象中拥有当前用户:

@login_required
def account_home(request):
    u = MyUser.objects.get(username=request.user.username)
    return render(request, "accounts/account_home.html", {})

并将其从 url 定义中删除:

url(r'^$', 'account_home', name='account_home'),