圖書勘誤記錄(非圖靈)《Django Web 開發指南》第8章
在學習《Django Web 開發指南》這本書上第8章的例子 其它一切都還好,就是遇到個難解的問題 在訪問如:http://localhost:8000/cms/search/?q=2 這樣得地址時,總是出現:
Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/cms/search/?q=2
No story found matching the query
專案的 urls.py 如下:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^cms/',include('cms.urls')),
)
app 的 urls.py 如下:
from django.conf.urls.defaults import *
from models import Story
info_dict = { 'queryset': Story.objects.all(), 'template_object_name': 'story' }
urlpatterns = patterns('django.views.generic.list_detail',
url(r'^(?P<slug>[-\w]+)/$', 'object_detail', info_dict, name="cms-story"),
url(r'^$', 'object_list', info_dict, name="cms-home"),
)
urlpatterns += patterns('cms.views',
url(r'^category/(?P<slug>[-\w]+)/$', 'category', name="cms-category"),
url(r'^search/$', 'search', name="cms-search"),
)
對應的 search VIEW 程式碼如下:
def search(request):
"""
Return a list of stories that match the provided search term
in either the title or the main content.
"""
if 'q' in request.GET:
term = request.GET['q']
story_list = Story.objects.filter(
Q(title__contains=term) | Q(markdown_content__contains=term))
heading = u"搜尋結果"
return render_to_response("cms/story_list.html", locals())
由於對 Django 的 URL 機制瞭解不深,遇到該問題後一直非常困擾
最後在 search 這個 View 中插入了 assert False
發現頁面沒有如預期那樣出現 assert 頁面
還是之前的頁面,懷疑是 Django 的 URLConf 出了問題,最終在 app 的 urls.py 中找到原因所在:
url(r'^(?P<slug>[-\w]+)/$', 'object_detail', info_dict, name="cms-story"),
這一行的配置覆蓋了其後的:
url(r'^search/$', 'search', name="cms-search"),
如果按照書上(以及叢作者網站下載的程式碼)的寫法,search 這個 View 將永遠無法得到呼叫
將兩組 url 換了一下順序:
from django.conf.urls.defaults import *
from models import Story
info_dict = { 'queryset': Story.objects.all(), 'template_object_name': 'story' }
urlpatterns = patterns('cms.views',
url(r'^category/(?P<slug>[-\w]+)/$', 'category', name="cms-category"),
url(r'^search/$', 'search', name="cms-search"),
)
urlpatterns += patterns('django.views.generic.list_detail',
url(r'^(?P<slug>[-\w]+)/$', 'object_detail', info_dict, name="cms-story"),
url(r'^$', 'object_list', info_dict, name="cms-home"),
)
結果正常了。
此外,該書中譯本第148頁程式碼中
search_fields = ('title','content')
應當修改為
search_fields = ('title','markdown_content')
看來原作者和譯者都沒有對書中的程式碼進行嚴格的檢查啊。 順便BS下少數不負責任的圖書出版商。
不過,該章內容中介紹了用 django 搭建支援 markdown 的 CMS 相關內容,還是值得一看。
相關文章
- web前端開發閒置圖書Web前端
- 《普林斯頓數學指南》勘誤
- 從Python開始——圖靈圖書學習路線Python圖靈
- Django學習筆記《二》圖書管理系統Django筆記
- 圖靈技術圖書譯者須知圖靈
- 購書開啟圖靈第一天圖靈
- web拼圖錯誤分析Web
- AI數學基礎之:確定圖靈機和非確定圖靈機AI圖靈
- MaxCompute 圖計算開發指南
- 第134期 勘誤且自嘲一下(20240115)
- 4月書訊:10本圖靈新書圖靈新書
- 【圖靈圖書】殺入“黃榜”,你最中意的書可在其中?圖靈
- 校園圖書管理系統開發-中小學智慧圖書管理系統開發
- Django教程 —— 初步完善圖書管理系統Django
- Django入門案例:圖書管理系統Django
- 圖靈書單:前端學習路線?圖靈前端
- 圖靈書單:Java學習路線☕️圖靈Java
- 《Visual Studio 2017 Web 開發》截圖Web
- [開發教程] 第30講:Bootstrap縮圖boot
- 圖靈11月書訊:大約在冬季圖靈
- [圖書] Golang 優質開源圖書推薦Golang
- Web前端開發學習路線圖Web前端
- 【演算法圖解】讀書筆記:第3章 遞迴演算法圖解筆記遞迴
- Web 開發進階指南Web
- 帶你深入理解圖靈機--什麼是圖靈機、圖靈完備圖靈
- 15 圖靈圖靈
- Docker輕量級web圖形頁面管理 - Portainer部署記錄DockerWebAI
- Django開發Web監控工具-pyDashDjangoWeb
- 記錄--前端如何截圖前端
- 音視訊開發指南:圖片的繪製
- 018 Rust死靈書之非安全方式初始化記憶體Rust記憶體
- 《圖解 HTTP》 讀書筆記圖解HTTP筆記
- [圖靈贈書]《Python效能分析與最佳化》點評贈書圖靈Python
- 《C Primer Plus》,362頁勘誤
- 「iOS 面試之道」勘誤(二)iOS面試
- Django學習筆記《一》圖書管理系統專案掛載到阿里雲Django筆記阿里
- Go Web開發入坑指南GoWeb
- 50行爬蟲?️抓取並處理圖靈書目爬蟲圖靈
- 314 π節, 圖靈送你一份數學書單!圖靈