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