【问题标题】:Reverse for 'show_message' with arguments '('',)' not found. 1 pattern(s) tried: ['messages/<slug:the_sender>/$']未找到带有参数 '('',)' 的 'show_message' 的反向操作。尝试了 1 种模式:['messages/<slug:the_sender>/$']
【发布时间】:2020-12-28 16:46:54
【问题描述】:

我认为问题在于蛞蝓。不过我不确定发生了什么。

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 的初学者,所以我不太确定大多数东西是如何工作的。任何帮助将不胜感激。

【问题讨论】:

  • 你为什么要硬编码你的 slug 字段?你能加你的sendMessageModel吗?
  • @MeL 我希望链接包含我模型中的“发件人”字段。已添加模型,希望对您有所帮助。

标签: python html django slug


【解决方案1】:

您的模型中没有 slug 字段,只有 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'),

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 2021-01-17
    • 1970-01-01
    • 2022-01-17
    • 2020-10-28
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    相关资源
    最近更新 更多