2017-05-18 8 views
0

私は基本的なDjangoアプリを使っています(これは私の3番目の小さなプロジェクトです)、ユーザーが持っているすべての投稿のリストを許可するリンクを追加しようとしています製。 URL(URL /ドメイン/投稿/ユーザー名)が作成されていますが、これは既に作成したビューにリンクする必要があります。単一の値)、位置引数をビューに渡します。しかし、私は物事のRegEx/Urlsの部分に踏み込んで走っています。ユーザー名をDjangoのNoReverseMatchで表示するようにしました

urls.py:

urlpatterns = [ 
url(r'^create/', views.create, name='create'), 
url(r'^(?P<pk>[0-9]+)/upvote', views.upvote, name='upvote'), 
url(r'^(?P<pk>[0-9]+)/downvote' , views.downvote, name='downvote'), 
url(r'^userposts/(?P<user>[.]+)', views.userposts, name='userposts') 

views.py

def userposts(request,user): 
    posts = models.Post.objects.filter(url__contains=user) 
    return render(request, 'posts/userposts.html', {'posts': posts}) 

home.html

a href="{{ post.url}}">{{ post.title }}</a><br/>{{ post.pub_date_pretty }} by 
     <a href="{% url 'posts:userposts' %}{{post.author.username}}">{{ post.author.username }}</a></td> 

私は、これは、関連する情報だと思います最後のURL行の(?P [。] +)部分を削除すると、ページは正常に表示されますが、リンクは機能しません(ユーザーパラメータが渡されないため)。

NoReverseMatch at/
Reverse for 'userposts' with no arguments not found. 1 pattern(s) tried: ['posts/userposts/(?P<user>[.]+)'] 
Request Method: GET 
Request URL: http://127.0.0.1:8000/ 
Django Version: 1.11 
Exception Type: NoReverseMatch 
Exception Value:  
Reverse for 'userposts' with no arguments not found. 1 pattern(s) 
tried: ['posts/userposts/(?P<user>[.]+)'] 
Exception Location: /usr/local/lib/python3.5/dist- 
packages/django/urls/resolvers.py in _reverse_with_prefix, line 497 
Python Executable: /usr/bin/python3 
Python Version: 3.5.2 
Python Path:  
['/home/darren/redditclone/redditclone', 
'/usr/lib/python35.zip', 
'/usr/lib/python3.5', 
'/usr/lib/python3.5/plat-x86_64-linux-gnu', 
'/usr/lib/python3.5/lib-dynload', 
'/home/darren/.local/lib/python3.5/site-packages', 
'/usr/local/lib/python3.5/dist-packages', 
'/usr/lib/python3/dist-packages'] 
Server time: Thu, 18 May 2017 18:21:11 +0000 

答えて

2

あなたuserpostsを意味

url(r'^userposts/(?P<user>[.]+)', views.userposts, name='userposts') 

のように定義されていることが必要です:正規表現の存在(だけではなく、この1が、私が試した他の多く)で、私はNoReverseMatchエラーを取得します解決する引数はuserです。

あなたは

{% url 'posts:userposts' user_goes_here %} 

は試してみてくださいませんでしょう、そのような引数を渡すには、私は私がやった-think-この代わりに

<a href="{% url 'posts:userposts' post.author.username %}">{{ post.author.username }}</a> 
+0

後者はどちらもうまくいきませんでしたか?その場合のエラーメッセージは何でしたか? – user6731765

+0

私はそれを試してみましたが、エラーは次のとおりです: '引数 '(' darren '、)'がない 'userposts'のためのリバースが見つかりません。 1つのパターンが試されました:['posts/userposts /(?P [。] +)'] ' – djaychela

関連する問題