首页 > 解决方案 > Django错误的网址?

问题描述

我有两个网址。一个用于博客,另一个用于游戏。我有游戏和博客的应用程序。

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

我的游戏应用网址是这样的:

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

我的 blogapp 网址是这样的:

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

这个 url 是 to( 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)


...

标签: djangodjango-viewsdjango-urls

解决方案


detail路径将捕获应该触发该blog_id路径的 URL。确实,在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')),
]

推荐阅读