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')),
]
我有两个 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')),
]