微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

找不到带有参数“'',”的“ show_message”尝试了1个模式:['messages / <slug:the_sender> / $']

如何解决找不到带有参数“'',”的“ 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的初学者,所以我不太确定大多数内容是如何工作的。任何帮助将不胜感激。

解决方法

您的模型中没有子字段,只有CharFieldDateField。因此,如果要使用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 举报,一经查实,本站将立刻删除。