Django неправильный url?
У меня есть два адреса: один для блогов, другой для игр. У меня есть приложение для игр и блогов.
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 идет на (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
будет захватывать URL, которые должны выстрелить в пути blog_id
. Действительно, в 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')),
]