Django 错误的网址?

标签 django django-views django-urls

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

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

我的 gameapp url 是这样的:

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

我的 blogapp 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 路径的 URL。实际上,在 games.urls 中我们看到:

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

而对于 blog_id完整 URL 路径是:

     'blog/<slug:slug>'

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

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

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

关于Django 错误的网址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69596056/

相关文章:

python - 使用非整数变量创建 Django URL 模式

python - 在 django 中重新定义 home

python - 如何在 Django View 之间传递数据

python - 如何为从下拉列表中选择的多个值编写 django 过滤器查询?

python - Django - 当前 URL 与这些中的任何一个都不匹配

angularjs - Django-Angular 的 djng_rmi 模板标签不展开

python - QuerySet,对象没有属性id - Django

django - 如何检查自用户上次登录 Django 以来的新帖子

python - 将 URL 作为 Django URL 中的参数传递

django - URL模板可选参数