[英]django - urls.py root path set
當我輸入localhost:8000
或localhost:8000/store
,兩個視圖都與home/index.html
相同。 我希望這些路徑設置不同的視圖。
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
url(r'', 'home.views.index', name='view_home'),
url(r'^admin/', admin.site.urls),
url(r'^store/$', 'store.views.store_list', name='view_store_list'),
url(r'^store/(?P<store_id>\d+)$', 'store.views.single_store')
]
from django.shortcuts import render
def index(request):
return render(
request,
'index.html'
)
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from .models import Store # fetch Store model
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger # paginate
def store_list(request):
store_list = Store.objects.all()
paginator = Paginator(store_list, 2)
page = request.GET.get('page')
try:
stores = paginator.page(page)
except PageNotAnInteger:
stores = paginator.page(1)
except EmptyPage:
stores = paginator.page(paginator.num_pages)
return render(
request,
'index.html',
{
'stores': stores,
}
)
干杯!
我也嘗試過url(r'^$', 'home.views.index', name='view_home'),
,但是它會帶來相同的結果。
您需要錨定並終止根視圖的模式:
url(r'^$', 'home.views.index', name='view_home'),
我認為你的模板名稱相互沖突。 您可以像這樣為整個項目創建一個模板文件夾
Project
|>Templates
|>store
|>home
在模板中,您可以像這樣放置模板
Project
|>Templates
store
|>index.html
home
|>index.html
|store
|home
現在,您可以像這樣給出模板的路徑
def index(request):
return render(
request,
'home/index.html'
)
如果您想將模板保留在您的應用程序下的目錄中,那么此問題可能會對您有所幫助。
你有一個尾部斜杠'/'
url(r'^store/$', 'store.views.store_list', name='view_store_list')
因此它對url localhost:8000/store/
有效,但對於url localhost:8000/store
無效。 所以你需要刪除尾部斜杠。
加上@Daniel是對的,你需要像他在回答中提到的那樣放置主頁URL。 尾部斜杠是更改主頁URL后無法使其工作的原因。
Daniel提到的第一個問題是url模式,如果你只是設置空字符串它將始終匹配。 因此,您應該使用url(r'^$', 'home.views.index', name='view_home')
。 用r'^$'
表示模式只與空字符串匹配。 或者,您可以在列表末尾移動此URL,如果其他任何內容匹配,它將用作默認視圖。
我看到的第二個問題是你在store_list
視圖中返回:
return render(
request,
'index.html',
{
'stores': stores,
}
)
您是否為索引和存儲使用相同的模板index.html
,還是只是復制和粘貼錯誤? 如果是這樣,你確定stores
變量包含數據嗎? 如果您沒有任何結果,結果將與索引視圖相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.