当我尝试在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'),
)
这是它尝试呈现的代码,但不能。
提前感谢您的帮助!
答案 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'),