Django другой URL-адрес собирается на той же странице - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь создать 2 дополнительные страницы на своем сайте Django, я создал первую без проблем (calendar.html), но когда я пытаюсь создать вторую (actionplan.html), она не выдает ошибку, нокогда я получаю доступ к xxx / actionplan.html, он показывает страницу calendar.html ... Я не могу получить доступ к xxx / actionplan.html

Это мои urls.py:

from django.contrib import admin
from django.urls import path, include

from django.conf import settings
from django.conf.urls import url
from django.conf.urls.static import static


from django.views.generic import TemplateView
from django.views.generic.detail import DetailView

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', include('blog.urls')),
        url(r'xxx', TemplateView.as_view(template_name="calendar.html")),
        url(r'^xxx/$', DetailView.as_view(template_name="actionplan.html")),
        url(r'^admin/', admin.site.urls),
        url(r'^', include('blog.urls'), name="Blog"),
        ] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)

Этоэто мои views.py:

from django.views import generic
from .models import Post

class PostList(generic.ListView):
    queryset = Post.objects.filter(status=1).order_by('-created_on')
    template_name = 'index.html'

class PostDetail(generic.DetailView):
    model = Post
    template_name = 'post_detail.html'

class Calendar(generic.DetailView):
   model = Post
   template_name = 'calendar.html'

class Planoacao(generic.DetailView):
   model = Post
   template_name = 'actionplan.html'

Я пробовал:

 url(r'^xxx/$', DetailView.as_view(template_name="actionplan.html")),
    url(r'^xxx', DetailView.as_view(template_name="actionplan.html")),
    url(r'^xxx$', DetailView.as_view(template_name="actionplan.html")),
    url(r'xxx', DetailView.as_view(template_name="actionplan.html")),

У меня официально нет идей ... Может ли кто-нибудь определить проблему?

Ответы [ 2 ]

2 голосов
/ 01 ноября 2019

Проблема в том, что в вашем urlpatterns вы указали один и тот же URL два раза:

url(r'xxx', TemplateView.as_view(template_name="calendar.html")),
url(r'^xxx/$', DetailView.as_view(template_name="actionplan.html")),

Вы должны добавить разные URL для двух представлений,

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
    url(r'^xxx/plan$', DetailView.as_view(template_name="actionplan.html")),
    url(r'xxx', TemplateView.as_view(template_name="calendar.html")),
    url(r'^admin/', admin.site.urls),
    url(r'^', include('blog.urls'), name="Blog"),
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)

иВы должны использовать path без URL и не оба

2 голосов
/ 01 ноября 2019

Вы дали им тот же URL, по сути, yoursite.com/xxx, вы можете изменить их порядок и поставить сначала косую черту, и может работать, но тогда это станет кошмаром, если вы используетеПараметр APPEND_SLASH в django.

Чтобы исправить, сделайте ваши URL уникальными

* actionplan.html не имеет ничего общего с вашим URL, его "работает" только потому, что регулярное выражение для календаря простоищем xxx по указанному URL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...