私は基本的な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
その家庭内タグ内のリンクで.html? {%url 'posts.userposts' post.author.username%} {%url 'posts.author.username}} {%url' posts.author.username}} { } でも、それもうまくいきませんでしたか? – djaychela
後者はどちらもうまくいきませんでしたか?その場合のエラーメッセージは何でしたか? – user6731765
私はそれを試してみましたが、エラーは次のとおりです: '引数 '(' darren '、)'がない 'userposts'のためのリバースが見つかりません。 1つのパターンが試されました:['posts/userposts /(?P [。] +)'] ' –
djaychela