詳細ビューを表示するようにURLを構成するのに問題があります。このリンクをクリックすると、<a href='{% url blog_detail blog.slug %}'>{{ blog.name }}</a>
が表示されると思ったときにblog.html
がblog-detail.html
を表示します。エラーはなく、ブラウザバーには次のように表示されます:example.com/blog/the-slug
、それでもblog.html
ではなくblog-detail.html
からのhtmlが表示されます。なぜ何かアイデアはありますか?あなたのアイデアをありがとう。
url:
url(r'^blog/', 'myapp.views.blog', name='blog'),
url(r'^blog/(?P<slug>[\w-]+)/$', 'myapp.views.blog_detail', name='blog_detail'),
ビュー:
def blog(request):
blog_list = Blog.objects.all()
return render(request, 'blog.html', {'blog_list':blog_list})
def blog_detail(request, slug):
blog = get_object_or_404(Blog, slug=slug)
return render(request, 'blog-detail.html', {'blog':blog})
編集:@omouseによって要求された出力
これは、リンクをクリックしたときの出力です。 blog.html
とまったく同じですが、blog-detail.html
である必要があります。
<div id='content-wrapper'>
<section>
<div class='blog-name'><h2><a href='/blog/test/'>Test</a></h2></div>
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a ...
<div class='blog-name'><h2><a href='/blog/second-test/'>Second Test</a></h2></div>
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a ...
</section>
</div>
URLが問題であり、最初のURLはすべてに一致します(/blog/
、/blog/test/
、/blog/awdlawdjaawld
)、ドル記号が必要です$
最後にonlymatch /blog/
。
url(r'^blog/$', 'myapp.views.blog', name='blog'),
url(r'^blog/(?P<slug>[\w-]+)/$', 'myapp.views.blog_detail', name='blog_detail'),
上記は正しく機能するはずです。
ルドルフは絶対に正しい
/$
は、ブログがslugによって呼び出されたすべてのサブページをキャッチするのを停止したため、サブページがある場合は、次のように/$
をフォルダーレベルに追加する必要があります。
re_path('brands/$', AllBrands.as_view(), name="brands"),
re_path(r'^brands/(?P<slug>[\w-]+)/$', BrandDetail.as_view(), name = 'brandetail'),
これはDjango 2.2
ブランドの後に/$
がないと、スラッグページにブランドリストページが表示されていました。