在URL中显示用户名 - Django

时间:2015-02-18 21:43:17

标签: python django url django-views

当我尝试在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'),
)

这是它尝试呈现的代码,但不能。enter image description here

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:8)

简答:问题在于您的模板代码。您没有将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(r'^$', 'account_home', name='account_home'),