如何解决找不到带有参数“'',”的“ show_message”尝试了1个模式:['messages / <slug:the_sender> / $']
我认为问题在于lies。我不确定发生了什么。
Urls.py:
path('messages/',ShowMessageView.as_view(),name='message list'),path('messages/<slug:the_sender>/$',post_detail_view,name='show_message'),]
Views.py:
class ShowMessageView(ListView):
template_name="messages.html"
model= SendMessageModel
class ShowDetailView(DetailView):
model= SendMessageModel
slug_field = 'sender'
slug_url_kwarg = 'the_sender'
template_name="detailmessage.html"
post_detail_view = ShowDetailView.as_view()
messages.html:
{% for message in object_list %}
{% if message.recipient == request.session.username %}
<h5>{{message.datesent|date:'Y-m-d'}}<a href= "{% url 'show_messages' message.the_sender %}"> {{message.sender}}</h5>
{% endif %}
{% endfor %}
Models.py
class SendMessageModel(models.Model):
message= models.CharField(max_length=1000)
sender= models.CharField(max_length=100)
recipient= models.CharField(max_length=100)
datesent= models.DateField(max_length=100)
def __str__(self):
return self.sender
我是Django的初学者,所以我不太确定大多数内容是如何工作的。任何帮助将不胜感激。
解决方法
您的模型中没有子字段,只有CharField
和DateField
。因此,如果要使用SlugField
,则需要这样定义:
slug = models.SlugField()
但是也许这不是您真正想要实现的目标? DetailView
真正需要的是:
class ShowDetailView(DetailView):
model= SendMessageModel
现在您已经可以访问模板中的模型字段。您在DetailView
中所做的是将一个名为“ slug_url_kwarg”的新变量设置为一个字符串,该字符串将不会带您到任何地方。
因此,您可以按以下方式更改模板:
{% url 'show_message' message.sender %}
还如下更改您的urls.py
:
path('messages/<str:sender>/',post_detail_view,name='show_message'),
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。