【问题标题】:Django wrong url?Django错误的网址?
【发布时间】:2021-12-04 07:51:33
【问题描述】:

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

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

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

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('/&lt;slug:slug&gt;', 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)


...

【问题讨论】:

  • 我也有同样的问题!也无法解决,所以这里rez
  • 你好@cvsrt 你能提供你的错误吗
  • 你能分享一下这些网址路径背后的观点吗?
  • @AnkitTiwari Oyunlar 匹配查询不存在。这是因为它要去oyun.views.而不是views.blog。

标签: django django-views django-urls


【解决方案1】:

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')),  # &leftarrow; first the blog/ paths.
    path('',include('games.urls')),
]

【讨论】:

  • 成功了!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-14
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多