将用户名放在网址中

时间:2017-05-02 12:36:28

标签: python html django

所以我现在正在研究这个问题几天,我似乎仍然不明白这个问题。我正在尝试在网址中获取用户名,以便您可以在键入http://127.0.0.1:8000/accounts/profile/username时查找任何用户并显示用户个人资料。我已经看了其他问题,但是当我尝试时,我一直收到这个错误。如果有人能帮助我,我将不胜感激。

  

/ accounts / profile / admin的NoReverseMatch   使用参数'('',)找不到'viewprofile'的反转。尝试了1种模式:['accounts / profile /(?P [\ w。@ + - ] +)']

views.py

def view_profile(request, username):
    username = User.objects.get(username=username)
    posts = Post.objects.filter(author = request.user).order_by('-pub_date')
    args = {
    'user': request.user,
    'posts': posts,

    }
    return render(request, 'accounts/profile.html', args)

在我的导航栏中:这可能是错的,但我确定它是正确的

<li><a href="{% url 'accounts:viewprofile' username%}">Profile</a></li>

urls.py

    url(r'^profile/(?P<username>[\w.@+-]+)', views.view_profile, name="viewprofile"),

2 个答案:

答案 0 :(得分:0)

您在上下文中提供了user密钥,您在模板中使用了username。也许这就是问题。

答案 1 :(得分:0)

如果失败请尝试匹配的网址,请尝试以下操作:

url(r'profile/(?P<username>[a-zA-Z0-9]+)$', views.view_profile, name="viewprofile"),