[英]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.