簡體   English   中英

Django 不同 url 去同一個頁面

[英]Django different url going to the same page

我正在嘗試在我的 Django 站點上創建 2 個額外頁面,我創建了第一個頁面沒有問題(calendar.html)但是當我嘗試創建第二個頁面(actionplan.html)時它沒有給我任何錯誤,但是當我訪問xxx/actionplan.html,它顯示日歷。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")),

我現在正式沒有想法......有人能發現問題嗎?

你已經給了他們相同的 url 本質上, yoursite.com/xxx ,你可以重新排序它們並將斜線放在第一位,這可能會起作用,但是如果你使用 django 的APPEND_SLASH設置,那將成為一場噩夢。

要解決此問題,請讓您的網址獨一無二

actionplan.html與您的 url 無關,它的“工作”只是因為日歷的正則表達式只是在給定的 Z572D4E421E5E6B9BC11D815E8A027 中尋找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)

你應該使用path沒有 url 而不是兩者

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM