Django 错了url?

Django wrong url?

我有两个 urls.One 用于博客,另一个用于 games.I 有用于游戏和博客的应用程序。

path('',include('games.urls')),
   path('blog',include('blogs.urls')),

我的游戏应用 url 是这样的:

path('<slug:platform>/<slug:slug>',views.oyun,name='detail'),

我的博客应用 url 是这样的:

path('', views.blogs, name='blog'),
    path('/<slug:slug>', views.blog_id, name='blog_id'),

这个 url 将要 (path('/<slug:slug>', views.blog_id, name='blog_id')), views.oyun 所以它给出了错误。我该如何解决这个问题?

Views.py

def blogs(request):
    blogss=blog.objects.all().order_by('-created')
    return render(request,"blog.html",{"blogs":blogss})


def blog_id(request,slug):

    blog_id=blog.objects.get(seo_url=slug)



    return render(request,"blog-writings.html",{"blog_id":blog_id})

def oyun(request,platform,slug):
   oyun = Oyunlar.objects.get(slugyap=slug)


...

detail 路径将捕获应该触发 blog_id 路径的 URLs。事实上,在 games.urls 中我们看到:

path('<slug:platform>/<slug:slug>',views.oyun,name='detail'),

而对于 blog_id完整 URL 路径是:

     'blog/<slug:slug>'

这意味着如果您访问 blog/foo,它将触发 oyun 视图,其中 'blog' 作为 platform 变量的值,并且 'foo' 作为 slug 变量的值。

您可以交换路径,这样它将首先检查带有 blog/ 前缀的项目,并且只会触发 oyun 视图,如果不是这样的话:

urlpatterns = [
    path('blog',include('blogs.urls')),  # ← first the blog/ paths.
    path('',include('games.urls')),
]