2017-11-06 17 views
3

私はユーザーのためにかなり従来型の動的URLプロファイルページを作成しようとしています。だから例えば。 www.website.com/profile/(ユーザー名)Django:ユーザープロファイル用の動的URL

有効なユーザー名を入力すると、NoReverseMatchのエラーが発生します。その理由はわかりません。ここに私のコードのスニペット

urls.py

urlpatterns = [ 
url(r'^admin/', admin.site.urls), 

url(r'^signup/$', accountsViews.signup, name="signup"), 
url(r'^logout/$', authViews.LogoutView.as_view(), name='logout'), 
url(r'^login/$', authViews.LoginView.as_view(template_name='login.html'), name="login"), 
url(r'^find/$', findViews.find, name="find"), 
# url(r'^profile/$', accountsViews.profile, name="profile"), 
url(r'profile/(?P<username>.+)/$', accountsViews.profile, name="profile"), 
url(r'^$', views.home, name="home"),] 

views.py

def profile(request, username=None): 
if User.objects.get(username=username): 
    user = User.objects.get(username=username) 
    return render(request, "profile.html", { 
     "user": user, 
    }) 
else: 
    return render("User not found") 

htmlファイル

{% if user.is_authenticated %} 
       {% url 'profile' as profile_url %} 
       <li {% if request.get_full_path == profile_url %}class="active"{% endif %}><a href="{% url 'profile' %}"><span class="glyphicon glyphicon-user"></span> Profile </a></li> 
       <li><a href="{% url 'logout' %}"><span class="glyphicon glyphicon-log-out"></span> Log Out</a></li> 
      {% endif %} 

Alがありますエラーメッセージは、 "{%url 'profile'%}"の部分をエラーとして強調表示しており、逆の一致がないと主張しています。しかし、私のurls.pyでは、私はname = "profile"を行ったことをはっきりと確認することができます

ご協力いただければ幸いです。ありがとうございました!

+0

ビューで 'if'文が無意味です。 'get()'は値を返すか、例外を送出します。 –

答えて

4

あなたは、プロファイルのURLテンプレートタグ

{% url 'profile' user.username %} 

チェックドキュメントにユーザ名を置く必要があります。 https://docs.djangoproject.com/en/1.11/topics/http/urls/#examples

+0

ありがとう、それは問題を解決するようだ。しかし、可能性があります。あなたはそれを完全に理解するのを助けてください?私はAとしてログインしていてもBsプロファイルにアクセスしたいと考えています。この現行の実装では、現在ログインしているユーザーのプロファイルのみを表示しませんか? – ohjuny

関連する問題