python - 在 URL 中显示用户名 - Django

标签 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

预先感谢您的帮助!

最佳答案

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

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

尝试

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

长答案:话虽如此,您可能可以通过修改 View 来摆脱 username 参数。您已经在 View 的 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'),

关于python - 在 URL 中显示用户名 - Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28594508/

相关文章:

Django 管理员登录 403 Forbidden (CSRF cookie 未设置。)

python - 从 .com/重定向到 .com

php - 如何检查php中是否存在https站点

python - 如何为 tiff 文件添加附加标签

python - pyAudio 上的 stop_stream 函数不起作用,有什么建议吗?

python - 有没有办法在 python 中删除 zip 存档注释?

django - 为什么 Django 将应用程序放在我的项目文件夹的同一级别?

Javascript 网址管理

url - 在查询字符串之前的 URL 中可能有 & 符号 ("&") 吗?

python - 我怎样才能更多地了解 Python 的内部结构?