Django指向同一页的不同url

2024-06-17 14:52:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在我的Django站点上创建两个额外的页面,我创建了第一个没有问题的页面(calendar.html),但是当我尝试创建第二个页面(actionplan.html)时,它没有给我任何错误,但是当我访问xxx/actionplan.html时,它显示calendar.html页面。。。我无法访问xxx/actionplan.html

这是my url.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)

这是我的观点.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")),

我现在真的没有主意了。。。有人能发现问题吗


Tags: djangonamefromimportviewurladminhtml
2条回答

你给了他们相同的url,基本上,yoursite.com/xxx,你可以重新排序,把斜杠放在第一位,可能起作用,但是如果你使用django的APPEND_SLASH设置,那将是一场噩梦

要修复,请使您的URL唯一

actionplan.html与您的url无关,它的“工作”只是因为日历的regex只是在给定url中寻找xxx

问题是,在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)

而且您应该使用pathno url,而不是两者都使用

相关问题 更多 >