Я не смог понять, почему шаблон url не может быть сопоставлен в Django

urls.py

tmp_urlpatterns = [
    path('',MsgList.as_view(),name='user_inbox'),
    path('outbox/',MsgOutbox.as_view(),name='user_outbox'),
    path('<int:mid>/',MsgRead.as_view(),name='user_msgread'),
    path('<int:mid>/reply/',MsgReply.as_view(),name='user_msgreply'),
    path('send/<int:mid>/',MsgSend.as_view(),name='user_msgsend'),
]

models.py

class Message(models.Model):
    sender = models.ForeignKey(User,models.CASCADE,related_name='outbox')
    course = models.ForeignKey(Course,models.CASCADE,related_name='notices',null=True,default=None)
    recipient = models.ForeignKey(User,models.CASCADE,related_name='inbox',null=True,default=None)
    title = models.CharField('主旨',max_length=255)
    body = models.TextField('內容')
    created = models.DateTimeField('時間',auto_now_add=True)

    def __str__(self):
        return '{}: {}-{}'.format(self.id,self.sender,self.title)

class MessageStatus(models.Model):
    message = models.ForeignKey(Message,models.CASCADE,related_name='status')
    user = models.ForeignKey(User,models.CASCADE,related_name='read_list')
    read = models.DateTimeField('閱讀時間',auto_now_add=True)

    def __str__(self):
        return '{}: {}-{} @{}'.format(self.id,self.message.sender,self.message.title,self.read)

views.py

class MsgReply(LoginRequiredMixin,CreateView):
    extra_context = {'title':'回覆訊息'}
    model = Message
    fields = ['title','body']

    def get_initial(self):
        self.msg = Message.objects.get(id=self.kwargs['mid'])
        return {
            'title':'Re: '+self.message.title,
            'body':'{}({}) 於 {} 寫道:\n> {}'.format(
                self.msg.sender.username,
                self.msg.sender.first_name,
                self.msg.created,
                '\n> '.join(self.msg.body.split('\n'))
            ),
        }

message_detail.html

<a href="{% url 'user_msgreply' message.id %}" class="btn btn-sm btn-secondary">
        <i class="fas fa-reply"></i> 回覆
</a>

Ошибка:

NoReverseMatch at /user/msg/1/
Reverse for 'user_msgreply' with arguments '('',)' not found. 1 pattern(s) tried: ['user/msg/(?P<mid>[0-9]+)/reply/$']

Для шаблонов url я добавил маршрут user_msgreply. Поскольку у меня есть модель MessageStatus, которая будет записывать, когда пользователь прочитал сообщение, поэтому когда я пытаюсь нажать на гиперссылку, шаблон может отображаться как обычно, но после обновления страницы он показывает сообщение об ошибке ниже, и я не мог понять, где проблема, поскольку в html шаблоне я уже поместил параметр, как {% url 'user_msgreply' message.id %}. Может ли кто-нибудь помочь мне разобраться в проблеме?

попробуйте это: {% url 'user_msgreply' request.message.id %}

Вернуться на верх