Есть несколько проблем. Начнем с этого:
<a href="{% url 'profile_with_pk' pk=user.username %}">
{{ post.post }}
</a>
Весь пост обернут в ссылку. Я думаю, вы хотите сделать ссылку на автора сообщения, верно? Затем (нужно только угадать схему вашей модели, которую вы не опубликовали), вам нужно что-то вроде этого:
# iteration through posts somewhere here
<a href="{% url 'profile_with_pk' pk=user.username %}">user.username</a>
{{ post.post }}
Далее, если вы пометили пользователей, вам нужно как-то поместить их в шаблон в ваших постах. В зависимости от того, как вы sh добавите ссылку на упомянутых пользователей, это может быть что-то вроде:
# iteration through posts somewhere here
<a href="{% url 'profile_with_pk' pk=user.username %}">user.username</a>
{{ post.post }}
Mentions: {% for tagged_user in tagUsers %} {{ tagged_user.username }} {% endfor %}
Или, может быть, вы хотите вставить ссылки прямо в текст сообщения? Затем вам нужно создать структуру поста перед передачей его в шаблон (пример снят; скорее, потребуются улучшения):
from django.utils.html import mark_safe
def post(self, request, pk=None):
...
post_text = post.post
tagUsers = re.findall(r"@+(\w+)", post.post)
tagged_users = list()
for username in tagUsers:
user = User.objects.get(username=username)
for match in re.finditer(username, post_text):
start = match.start()
end = match.end()
profile_link = reverse('profile_with_pk', kwargs={'pk': user.id})
post_text[start:end] = mark_safe(f'<a href="{profile_link}">username</a>')
...
# return post_text to template context and use in the same way as used post