這一章,我學習到顯示18.4.3,顯示特定主題頁面的時候,總是報錯,對比了代碼也不知道錯在哪里,請大神幫助。
前面顯示到這里http://127.0.0.1:8000/topics/,是正常的,接下去點具體的主題時就報錯了。

注意到書上的地址是http://127.0.0.1:8000/topics/1/,而我的是http://127.0.0.1:8000/topics/(%3FP1%5Cd+)/
是不是path('topics/(?P<topic_id>\d+)/', views.topic, name='topic'),這個正則運算式寫錯了?
謝謝!
uj5u.com熱心網友回復:
為什么好象沒人提過entry沒有date_added屬性呢。經過半天的測驗,發現問題出在views.py里面def topic(request, topic_id):
"""顯示單個主題及其所有條目"""
topic = Topic.objects.get(id=topic_id)
#entries = topic.entry_set.order_by('-date_added')
entries = topic.entry_set.all()
context = {'topic': topic, 'entries': entries}
return render(request, 'learning_logs/topic.html', context)
的entries = topic.entry_set.order_by('-date_added')這一句上面,只要換成entries = topic.entry_set.all()就可以了,在shell里測驗時候,提示entry沒有date_added屬性

但是想想似乎又有點不科學啊,一個是這么多前輩都沒提過這個事情;另一個是應該能夠按照添加的時間來排序,沒有這么屬性又該怎么按時間排序呢?究竟問題出在什么時候,還請大神解答一下,謝謝!
uj5u.com熱心網友回復:
一樣的問題我也出現過你topic屬性少了個on_delete=models.CASCADE你最好全部代碼都發上來,看看你的還有沒有其他地方寫錯
"""檔案models.py"""
from django.db import models
# Create your models here.
class Topic(models.Model):
'''用戶學習主題'''
text = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
"""回傳模型的字串表示"""
return self.text
class Entry(models.Model):
topic = models.ForeignKey(Topic,on_delete=models.CASCADE)
text = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
class Mete:
verbose_name_plural = 'entries'
def __str__(self):
"""回傳模型的字串表示"""
return self.text[:50] + '...'
uj5u.com熱心網友回復:
path('',views.index,name = 'index'),
path('topics/',views.topics,name='topics'),
path("topics/<topic_id>/",views.topic,name='topic')
uj5u.com熱心網友回復:
好像是某個模塊中的路徑 用 ‘/’如果用'\'會出現這樣的問題。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/110762.html
上一篇:匯編課設 電子時鐘
下一篇:(python)小白的無奈
